@yurnov

Как смотреть за результатом выполнения команд в telnet-сесии запущеной через expect?

Пытаюсь автоматизировать сбор некоторых данных с узлов, доступных по telnet с помощю скрипта, используя expect

#!/usr/bin/expect
set timeout 20
set name [lindex $argv 0]
log_user 1
spawn telnet $name
expect "login:"
send "USERNAME"
expect "Password:"
send "PASSWORD"
send " "
send "show ip interface eth0 brief"
send " "
send "exit"


Скрипт отлично годится для выполнения команд на удаленном узле (и при запуске из другого скрипта — на многих узлах по списку), но вот в вывод не попадает результат выполения команд на удаленном узле, т.е. я вижу что-то типа

Trying 10.10.10.5...
Connected to 10.10.10.5.
Escape character is '^]'.
CLI interface
login: 
Password:


А хотел бы видеть
Trying 10.10.10.5...
Connected to 10.10.10.5.
Escape character is '^]'.
CLI interface
login: USERNAME
Password: ********

nodename>
nodename>show ip interface eth0 brief

Interface             IP-Address      Status                Protocol
eth0                  10.10.10.5   up                    up

nodename>
nodename>exit
Connection closed by foreign host.


либо хотя-бы

Interface             IP-Address      Status                Protocol
eth0                  10.10.10.5   up                    up


Как с помощю expect получать вывод выполнения команд на удаленном хосте?
  • Вопрос задан
  • 942 просмотра
Решения вопроса 1
antondemidov
@antondemidov
Добрый день,
у меня сделано вот так:
output=$(expect -c '
spawn telnet 10.250.0.'$Counter'
expect "User name:"

send "admin\r"
expect "Password:"
......
send "cable-diagnostics '$I'\r"
expect "%"
......
echo "$output"

Кажется необходимо добавить \r и expect "%"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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