Использование 'expect' для автоматической отправки пароля [дубликат]
Вопрос
На этот вопрос уже есть ответ здесь:
Я пытаюсь скопировать файл с моего удаленного сервера на мой локальный.Вот мой скрипт для его запуска, используя 'expect' для автоматической отправки пароля
scp user@host:/folder/myFile ./
expect "Password: "
send "myPassword"
Когда я запускаю это, оно по-прежнему запрашивает "Пароль", что не так?
Решение
Судя по тому, что вы пытаетесь сделать, вам, возможно, было бы лучше использовать ssh с открытым и закрытым ключом.Вы могли бы поискать в Google руководство по ssh-keygen, чтобы начать.
Другие советы
Хотя я согласен с Сэмом и Ником, ответ на ваши вопросы заключается в том, что вы не "нажимали ввод".:
send "mypassword\r"
Этот ожидаемый скрипт выполняет свою работу (благодаря "зедвуд" )
#!/usr/bin/expect -f
set filename [lindex $argv 0]
set timeout -1
spawn scp $filename myusername@192.168.1.123:/home/myusername/
set pass "mypassword"
expect {
password: {send "$pass\r" ; exp_continue}
eof exit
}
пожалуйста, даже не оставляйте такие скрипты, которые будут подобраны кем-то другим и использованы в другом месте....действительно попробуйте аутентификация по открытому ключу, это очень легко настроить.