Comment passer de mot de passe comme d'un argument à un script shell
Je suis dans le processus d'automatisation de l'installation de sage par ansible-playbook. Dans ce que j'ai besoin de courir deux scripts shell.
Voici comment le premier script shell look:
#!/bin/bash
# Creating Sage notebook
dir="/root/.sage/sage_notebook.sagenb"
screen -S "Sage_Server" sage -c 'notebook(interface="", directory=$dir, port=80, accounts=true)'
C'est le deuxième script shell code:
#!/bin/bash
# Creating Sage inotebook
address=$(hostname --ip-address)
sage -c "inotebook(interface=" "'$address'" ",port=80,accounts=true)"
Et c'est ainsi que le playbook de l'air:
---
- hosts: localhost
remote_user: root
tasks:
- name : update system
apt : update_cache=yes
- name : install m4
apt : name=m4 state=present
- name : install build-essential
apt : name=build-essential state=present
- name : install gcc
apt : name=gcc state=present
- name : install gfortran
apt : name=gfortran state=present
- name : install libssl-dev
apt : name=libssl-dev state=present
- name : install python-software-properties
apt : name=python-software-properties state=present
- name : add sage ppa repo
apt_repository: repo='ppa:aims/sagemath'
- name : update system
apt : update_cache=yes
- name : install dvipng
apt : name=dvipng state=present
- name : install sage binary
apt : name=sagemath-upstream-binary state=present
- name : invoke create_sagenb script
command: /usr/bin/screen -d -m sudo /root/databases-and-datamining-iiith/python-scripts/create_sagenb -i -y
- name : invoke start_sage script
command: /usr/bin/screen -d -m sudo /root/databases-and-datamining-iiith/python-scripts/start_sage -i -y
Maintenant lorsque je lance le premier script, il demande une nouvelle sage mot de passe qui pourrait être n'importe quoi. Mais je ne suis pas en mesure de passer ce mot de passe à partir de la playbook.
Encore, si je ne
ps -ef | grep sh
J'ai pu voir que les scripts sont en cours d'exécution, mais le sage le service n'est pas en cours d'exécution.
Il a besoin du mot de passe pour démarrer le service.
Quelqu'un pourrait-il me dire comment puis-je fournir le mot de passe comme un argument pour les scripts shell avec la commande.
OriginalL'auteur apurv | 2015-08-28
Vous devez vous connecter pour publier un commentaire.
En règle générale, vous ne devriez pas exécuter les scripts que les besoins de la saisie de l'utilisateur dans ansible tablettes playbook.
Vous pouvez essayer d'utiliser quelque chose comme
ou
Créer un
sage-password
fichier dans/etc
contenant le mot de passe et:Mais cela ne fonctionne que si elle est la lecture de l'entrée standard stdin la plupart des applications de lecture de mot de passe directement à partir de pilote de périphérique terminal server (c'est à dire
/dev/ttyS
# ), dans ce cas, cette astuce ne fonctionne pas.Si c'est le cas, jetez un oeil à la sauge docs, ils doivent avoir une façon plus robuste pour les non-interactive de démarrage.
expect
et l'écart devrait être meilleure et plus garantis choix.OriginalL'auteur Filipe
Je ne sais pas
sage
et ne savez pas comment fournir un mot de passe d'une autre manière, mais si le programme demandera un mot de passe que vous pouvez probablement utiliserexpect
comme l'a suggéré ici.OriginalL'auteur Alepac