2010-11-26 46 views
0

Dans le script expect suivant, j'ai remarqué que le script enverra le mot de passe avant même que le mot de passe ne vous soit demandé. Comment cela peut-il être évité? Pourrais-je utiliser une déclaration d'attente ou quelque chose?Utilisation de wait dans un script

#!/usr/bin/expect -f 
#set timeout 25 
spawn rsync [email protected]:'/usr/backups /usr/backup-scripts /root/test/' /root/ 
expect "[email protected]'s password: $" 
send "\$xxxxxx\n" 
expect "\\$ $ 
+0

Check est-il un RSYNC_PASSWORD dans l'établissement de l'environnement? Ou est la clé publique utilisée dans le serveur ciblé? (dans ce cas, supprimez la clé) – ajreal

Répondre

0

Vous ne devriez même pas avoir besoin d'utiliser expect pour cette tâche. Selon le man page, rsync prend en charge une option pour lire un mot de passe directement à partir d'un fichier:

rsync --password-file=file_that_password_is_in [email protected]:'/usr/backups /usr/backup-scripts /root/test/' /root/ 

ou en utilisant une variable d'environnement:

export RSYNC_PASSWORD=secret 
rsync [email protected]:'/usr/backups /usr/backup-scripts /root/test/' /root/ 
+0

Je ne recommande pas d'utiliser des variables d'environnement sur une machine partagée; * tous les * utilisateurs de la machine peuvent lire * toutes * les variables d'environnement de chaque processus (cela nécessite seulement quelques options supplémentaires pour 'ps'). –

+0

Le fichier --password-ne fonctionne pas ...... – Rajeev