Я пытаюсь подключиться к сетевому маршрутизатору и выполнить 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
аргумент. Это покажет вам, что именно ожидаемое должно совпадать, и, надеюсь, подскажет, что не так в вашем выражении соответствия.