2009-06-25 5 views
3

Я пытаюсь скопировать файл с моего удаленного сервера на локальный. Вот мой сценарий, чтобы запустить его, используя «ожидать», чтобы отправить automaticlally в паролеИспользование «ожидать» для автоматической отправки пароля

scp [email protected]:/folder/myFile ./ 
expect "Password: " 
send "myPassword" 

Когда я запускаю это, она по-прежнему запрашивает «пароль», что не так?

ответ

1

От того, что вы пытаетесь сделать, это похоже на то, что вам может быть лучше использовать ssh с открытым и закрытым ключом. Для начала вы можете использовать google для учебника ssh-keygen.

4

, пожалуйста, даже не оставляйте такие скрипты вокруг, которые будут подхвачены кем-то другим и использованы в другом месте .... попробуйте public key authentication, его очень легко настроить.

10

Хотя я согласен с Сэмом и Nik, ответ на ваши вопросы, что вы не «нажать кнопку ввода»:

send "mypassword\r" 
5

Это ожидать скрипт делает работу (спасибо 'zedwood')

#!/usr/bin/expect -f 
set filename [lindex $argv 0] 
set timeout -1 
spawn scp $filename [email protected]:/home/myusername/ 
set pass "mypassword" 
expect { 
     password: {send "$pass\r" ; exp_continue} 
     eof exit 
} 
+0

Первый рабочий скрипт, который я нахожу в stackoverflow! Спасибо, что поделились! Я всегда натыкаюсь на советы, которые я не должен использовать, ожидая таким образом ... На самом деле я разрабатывал программу, которую я должен тестировать на маршрутизаторе, чей сервер sshd не поддерживает аутентификацию открытого ключа Orz. Использование ожиданий - мое единственное спасение. –