2013-07-31 12 views
5

Ich versuche, ein rsync-Backup von Dreamhost auf einen anderen Host zu tun, hier ist der Befehl, den ich verwenden möchte:In bash, wie gebe ich ein Passwort für einen Hintergrundprozessbefehl ein?

nohup rsync -e "/ usr/bin/ssh" --bwlimit = 2000 -av [email protected]: remote_directory lokales_Verzeichnis &

I der Prozess im Hintergrund laufen halten möchten und auch wenn ich trennen. Problem ist, ich weiß nicht, wie man das Passwort eingibt, wenn es ein Hintergrundprozess ist. Wie mache ich das?

+4

Warum verwenden Sie keinen Schlüssel? –

Antwort

8

Normalerweise geschieht dies, indem kein Passwort benötigt wird. Erwägen Sie stattdessen, SSH so zu konfigurieren, dass ein öffentlicher Schlüssel verwendet wird. Es gibt mehrere Online-Ressourcen (z. B. this one from dreamhost), die Ihnen dabei helfen können.

4

Ich würde einen Schlüssel verwenden. Wenn Sie den Schlüssel mit einem Passwort schützen müssen oder Sie können keinen Schlüssel für welchen Gründen auch immer verwenden, dann verwenden Sie erwarten, dass das Passwort weitergeben müssen:

rsync_auto.sh:

#/bin/bash 

expect <<<EOF 
spawn nohup rsync -e "/usr/bin/ssh" --bwlimit=2000 -av [email protected]:remote_directory 
expect "password:" 
send "your_password\r" 
expect eof 
EOF 

!!! Stellen Sie sicher, dass niemand außer Sie kann auf die Datei zugreifen !!!:

chmod 500 rsync_auto.sh 

ein wenig aufwendigerer Weg sein könnte, das Passwort in einem Schlüsselbund Anwendung zu speichern, wie gnome-keyring, anstatt sie in einer einfachen Datei zu speichern. Ich habe dieses article gefunden, wenn Sie interessiert sind.

+1

Und erkennen Sie, wer diese Datei lesen kann, kann das Passwort lesen. – Paul

+0

@Paul Ja, das stimmt. Aber jeder, der die Datei lesen kann, kann auch den Schlüssel verwenden. Stellen Sie einfach sicher, dass die Datei nur vom Eigentümer lesbar ist. – hek2mgl

+0

Vereinbart, zumindest ssh Client wird Ihnen sagen, wenn Ihre Schlüsseldatei, sagen wir, Welt lesbar ist und blockieren Sie mit ihr. – Paul