抑制期望输出
Suppress expect output
我有以下登录路由器并执行命令的脚本。我怎样才能只完成输出而不显示任何其他内容。
#!/usr/bin/expect -f
set timeout 3000
log_user 0
spawn ssh -o StrictHostKeyChecking=no ananair@172.20.60.187
expect {
"*assword:" {
send "anismi@123\n"
expect "*#"
log_user 1
send "show bgp vrf IKA summary | include 10.155.192.50\n"
expect "*#"
}
}
这是上面脚本的输出。
[root@cap-nwmon-01 anand]# ./migrate.sh
show bgp vrf IKA summary | include 10.155.192.50
Sun Feb 25 07:17:25.150 EET
10.155.192.50 0 65256 3107179 4237248 1624156 0 0 5d17h 322
这是我希望从此脚本获得的唯一输出。
Sun Feb 25 07:17:25.150 EET
10.155.192.50 0 65256 3107179 4237248 1624156 0 0 5d17h 322
也许尝试重定向不需要的输出,例如
send "show bgp vrf IKA summary | include 10.155.192.50\n" &> /dev/null
将其 stdout 和 stderr 重定向到遗忘的虚无
您看到额外的行是因为您在 send "show..."
之前给出了命令 log_user 1
,这导致 "show..."
的回显被记录到标准输出。如果您稍后将此命令移动一行,在 send
之后,并通过添加 expect "\n"
等待回显完成,那么您将看到更少:
expect "#"
send "show bgp vrf IKA summary | include 10.155.192.50\n"
expect "\n"
log_user 1
expect "#"
请注意,模式开头的 *
glob 字符没有任何作用。
或者,您应该考虑使用变量 $expect_out(buffer)
,而不是更改 log_user
,它保存与模式匹配的内容,包括在内。
我有以下登录路由器并执行命令的脚本。我怎样才能只完成输出而不显示任何其他内容。
#!/usr/bin/expect -f
set timeout 3000
log_user 0
spawn ssh -o StrictHostKeyChecking=no ananair@172.20.60.187
expect {
"*assword:" {
send "anismi@123\n"
expect "*#"
log_user 1
send "show bgp vrf IKA summary | include 10.155.192.50\n"
expect "*#"
}
}
这是上面脚本的输出。
[root@cap-nwmon-01 anand]# ./migrate.sh
show bgp vrf IKA summary | include 10.155.192.50
Sun Feb 25 07:17:25.150 EET
10.155.192.50 0 65256 3107179 4237248 1624156 0 0 5d17h 322
这是我希望从此脚本获得的唯一输出。
Sun Feb 25 07:17:25.150 EET
10.155.192.50 0 65256 3107179 4237248 1624156 0 0 5d17h 322
也许尝试重定向不需要的输出,例如
send "show bgp vrf IKA summary | include 10.155.192.50\n" &> /dev/null
将其 stdout 和 stderr 重定向到遗忘的虚无
您看到额外的行是因为您在 send "show..."
之前给出了命令 log_user 1
,这导致 "show..."
的回显被记录到标准输出。如果您稍后将此命令移动一行,在 send
之后,并通过添加 expect "\n"
等待回显完成,那么您将看到更少:
expect "#"
send "show bgp vrf IKA summary | include 10.155.192.50\n"
expect "\n"
log_user 1
expect "#"
请注意,模式开头的 *
glob 字符没有任何作用。
或者,您应该考虑使用变量 $expect_out(buffer)
,而不是更改 log_user
,它保存与模式匹配的内容,包括在内。