Назад | Перейти на главную страницу

Простой сценарий EXPECT для выполнения удаленной команды и отображения вывода

Я пытаюсь подключиться к сетевому маршрутизатору и выполнить show status в теме.
В настоящее время я использую:
spawn ssh -o StrictHostKeyChecking=no admin@192.168.20.254
expect " * ? password:*\r"
send -- "secretPassword\r"
sleep 5
send -- "show status\r"
sleep 10
send -- "exit\r"

Это не работает, я застреваю admin@192.168.20.254's password:Я попытался ввести пароль, но он не работает, я получаю:
server1:~# secretPassword
-bash: server1: command not found
server1:~#


Что я здесь так не так делаю ...?

Попробуй сделать это вот так

#!/usr/bin/expect -f
set timeout 120
spawn ssh -o StrictHostKeyChecking=no admin@192.168.20.254
expect "*?assword:*"
send -- "secretPassword\r"
sleep 5
send -- "show status\r"
sleep 10
send -- "exit\r"
expect eof

Если ваше устройство медленно реагирует, вам, вероятно, нужно установить подходящий тайм-аут.

Сначала вы должны взглянуть на автоматизацию всего процесса сбора и отслеживания информации маршрутизатора с помощью ПРОТИВНИК вместо того, чтобы делать одноразовое решение.

Для этой конкретной проблемы взгляните на автоматическое ожидание для автоматизации создания ожидаемого сценария. Это должно дать вам рабочий сценарий ожидания, с которого можно начать. Чтобы исправить существующий сценарий, попробуйте запустить expect с -d аргумент. Это покажет вам, что именно ожидаемое должно совпадать, и, надеюсь, подскажет, что не так в вашем выражении соответствия.