Как использовать SFTP BatchMode внутри EXPECT [Shell Script]

У меня есть набор серий 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 и т.д.,

0
задан 31 January 2018 в 18:23
1 ответ

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

expect eof

Вы можете получить больше отладки от expect, запустив его с помощью expect -d .

1
ответ дан 4 December 2019 в 16:02

Теги

Похожие вопросы