Как получить ответ от команды SSH с использованием ожидаемого

В настоящее время я использую следующий код,

#!/usr/bin/expect --

set timeout 60

set username [lindex $argv 0]
set password [lindex $argv 1]
set ip [lindex $argv 2]


spawn ssh $username@$ip

expect {
        "*yes/no*" { send "yes\r" }
        "?assword:" { send "$password\r" }
}
expect ">"
send "en\r"

expect "#"
send "con t\r"

expect "(config) #"
send "show interf\r"
interact

У меня следующие результаты в терминале,

    Interface abcdefgh status:
       Comment:            
       Admin up:           XXX
       Link up:            XXX
       DHCP running:       XX
       IP address:         00.00.00.000 /00
       Netmask:            255.255.255.0
       IPv6 enabled:       no
       Speed:              1000Mb/s (auto)
       Duplex:             full (auto)
       Interface type:     abcdefgh
       MTU:                0000
       HW address:         XX:XX:XX:XX:XX:XX

Теперь я хочу прочитать адрес HW, так как я использую ожидание для автоматизации Есть ли способ для этого. Благодаря

0
задан 12 December 2013 в 14:49

1 ответ

Попробуйте это:

send "show interf\r"
expect -re {HW address:\s+(\S+)}
set hw_addr $expect_out(1,string)
puts "the HW address is $hw_addr"

send "exit\r"  ;# or quit, or whatever
expect eof
0
ответ дан 12 December 2013 в 14:49

Другие вопросы по тегам:

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