2017-10-16 5 views
0

J'ai écrit un script shell et je le mets dans crontab mais j'ai un problème. Quand crontab lance mon script, exécute la commande scp à l'intérieur du script et obtient des informations de différents serveurs, donc je dois entrer le mot de passe de l'autre serveur dans mon script. Comment entrer un mot de passe dans un script?Comment entrer un mot de passe et un nom d'utilisateur à l'intérieur du script

mon script:

scp [email protected]:/Products/data/bridge/control.txt . 

????? (have to automatically enter password) 

b=$(more control.txt | wc -l) 

if [$b = 1]; then 

echo " OK " 

fi 
+1

Vous pouvez utiliser 'sshpass' pour terminer cette – mathB

+0

' sshpass -p "mot de passe" nom d'utilisateur scp @ host: /Products/data/bridge/control.txt .' Exact. – PoVa

+0

Essayez sshpass. Et votre système doit se connecter au serveur distant avant que vous ayez ~/.ssh/known_hosts dans votre système. Cependant cette méthode n'est pas suggérée car vous devez laisser votre mot de passe non protégé dans crontab ou dans le système de fichiers. Je vais suggérer d'utiliser ssh-keygen pour créer une clé, et mettre ~/.ssh/id_rsa.pub sur ~/.ssh/authorized_keys. Ensuite, votre système n'aura pas besoin de fournir un mot de passe pendant scp. – HZS

Répondre

0

Vous pouvez utiliser expect, par exemple:

my_password="123456" 
expect -c "spawn scp [email protected]:/Products/data/bridge/control.txt .; expect \"password\" {send -- \"${my_password}\r\"; expect eof;};"