Использование 'expect' для автоматической отправки пароля [дубликат]

StackOverflow https://stackoverflow.com/questions/1044986

Вопрос

Я пытаюсь скопировать файл с моего удаленного сервера на мой локальный.Вот мой скрипт для его запуска, используя '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
}

пожалуйста, даже не оставляйте такие скрипты, которые будут подобраны кем-то другим и использованы в другом месте....действительно попробуйте аутентификация по открытому ключу, это очень легко настроить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top