Tente isto:
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
atualmente estou usando o seguinte código,
#!/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
Eu tenho os seguintes resultados no terminal,
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
Agora eu quero ler o endereço HW, como estou usando esperar para automação, existe algum método para isso. Obrigado
Tente isto:
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