gpt4 book ai didi

expect - 使用 Expect 脚本将 IP 地址提取到变量

转载 作者:行者123 更新时间:2023-12-01 22:23:07 25 4
gpt4 key购买 nike

您好,我是 Expect 脚本编写的新手,我一直在尝试使用以下方法将 IP 地址获取到变量中:

set timeout -1
spawn $env(SHELL)
match_max 100000
send "ifconfig | grep -A 1 'eth1' | tail -1\r "
expect -re "inet addr:.* " {send "ping $expect_out(0,string)\r"}
send -- "exit\r"
expect eof

问题在于它正在尝试使用 ifconfig 命令的结果执行 ping 操作,该命令中包含一些字符串字符。

有人可以帮我从 ifconfig 命令中提取 IP 地址并将其存储在变量中吗?我也一直在使用 $expect_out(buffer) ,但就是无法理解它。任何有关这些方面的帮助将不胜感激。

最佳答案

您不需要生成 shell:

spawn ifconfig eth1
expect -re {inet addr:(\S+)}
set ipaddr $expect_out(1,string)
expect eof

spawn ping -c 10 $ipaddr
expect eof

事实上,您不需要在普通 Tcl 中使用 Expect:(对 ping 进行额外的错误检查):

if {[regexp {inet addr:(\S+)} [exec ifconfig eth1] -> ipaddr]} {
set status [catch [list exec ping -c 10 $ipaddr] output]
if {$status == 0} {
puts "no errors from ping: $output"
} else {
puts "ERROR: $output"
}
}

关于expect - 使用 Expect 脚本将 IP 地址提取到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13128223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com