У меня есть набор серий SFTP-команд, которые должны выполняться внутри expect.
Но когда я запускаю нижеприведенный скрипт, по некоторым причинам я не получаю никакого результата. Пожалуйста, поправьте меня, если я где-то ошибся в сценарии.
expect << EOF
spawn sftp -oPort=23 -oBatchMode=no -b cmds.txt xxx@1x.2.2x.8x
sleep 3
expect "xxx@1x.2.2x.8x's password:"
send "hello123\r"
EOF
Но когда я запускаю следующую команду в интерфейсе CLI, она работает отлично:
# spawn sftp -oPort=23 -oBatchMode=no -b cmds.txt xxx@1x.2.2x.8x
По соображениям безопасности я не могу использовать SCP, SSHPASS, KeyChain и т.д.,
После того, как вы сказали ожидать отправки пароля, ему нечего делать, поэтому он останавливается и убивает sftp. Добавьте ожидание конца файла из порожденной команды:
expect eof
Вы можете получить больше отладки от expect, запустив его с помощью expect -d
.