2010-11-26 12 views
0

Im folgenden expect-Skript habe ich festgestellt, dass das Skript das Kennwort noch vor der Aufforderung zur Eingabe des Kennworts sendet. Wie kann dies verhindert werden? Könnte ich eine Wartestatut oder etwas verwenden?Verwenden von wait in einem Skript

#!/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 ist ein RSYNC_PASSWORD in Umgebungseinstellung? Oder wird der öffentliche Schlüssel im Zielserver verwendet? (In diesem Fall, entfernen Sie den Schlüssel) – ajreal

Antwort

0

Sie sollten nicht einmal expect für diese Aufgabe verwenden müssen. Nach dem man page unterstützt rsync eine Option ein Passwort direkt aus einer Datei zu lesen:

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

oder eine Umgebungsvariable mit:

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

Ich empfehle nicht die Verwendung von Umgebungsvariablen auf einem freigegebenen Rechner; * Jeder * Benutzer auf der Maschine kann * alle * Umgebungsvariablen jedes Prozesses lesen (es erfordert nur einige zusätzliche Optionen zu 'ps'). –

+0

Die --password-Datei funktioniert nicht ...... – Rajeev