2013-07-31 13 views
5

Próbuję wykonać kopię zapasową rsync z DreamHost do innego hosta, oto polecenie chciałbym używać:W bashu, jak wprowadzić hasło dla polecenia procesu w tle?

nohup rsync -e "/ usr/bin/ssh" --bwlimit = 2000 -av nazwa_uż[email protected]: katalog_zdalny katalog_lokalny &

Chciałbym, aby proces działał w tle, a nawet po rozłączeniu. Problem polega na tym, że nie wiem, jak wprowadzić hasło, gdy jest to proces działający w tle. Jak mam to zrobic?

+4

Dlaczego nie używasz klucza? –

Odpowiedz

8

Zwykle robi się to, nie wymagając w ogóle hasła. Zamiast tego warto rozważyć skonfigurowanie SSH do używania klucza publicznego. Istnieje wiele zasobów online (takich jak this one from dreamhost), które mogą Ci w tym pomóc.

4

Chciałbym użyć klucza. Jeśli potrzebujesz do ochrony klucza za pomocą hasła lub nie można użyć klucza z jakiegokolwiek powodu, a następnie użyć oczekiwać przekazać hasło:

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 

!!! Upewnij się, że nikt oprócz ciebie może uzyskać dostępu do pliku !!!:

chmod 500 rsync_auto.sh 

nieco bardziej rozbudowany sposób może być, aby zapisać hasło w aplikacji do kluczy, jak gnome-kluczy zamiast przechowywania ich w zwykłym pliku. Znalazłem to article, jeśli jesteś zainteresowany.

+1

I zdaj sobie sprawę, że ktokolwiek może przeczytać ten plik, może odczytać hasło. – Paul

+0

@Paul tak, to prawda. Ale każdy, kto może odczytać plik, może również użyć klucza. Po prostu upewnij się, że plik może być odczytany tylko przez właściciela. – hek2mgl

+0

Uzgodniony, przynajmniej klient ssh powie Ci, kiedy twój plik kluczy jest, powiedzmy, czytelny dla świata i zablokuj go. – Paul

Powiązane problemy