我正在尝试ping路由器中的某些IP地址。我使用这段代码:
for {set n 0} {$n < 10} {incr n} {puts [exec "ping 199.99.$n.1]}
但这将显示输出。 问题是我不想看到输出。我想将该输出发送到另一个变量,并使用“regexp”搜索变量的内容并获得结果,并完成故事的其余部分。 但我不知道我怎么能这样做。
答案 0 :(得分:8)
使用set
命令。 puts
命令打印它的参数。
set pingOutput [exec ping "199.99.$n.1"]
或append
如果您希望所有IP的结果都在一个变量中。
set allPingOutput ""
for {set n 0} {$n < 10} {incr n} {
append allPingOutput [exec ping "199.99.$n.1"]
}
答案 1 :(得分:0)
尝试使用-c标志调用ping: ping -c 1 10.0.1.1
不确定如何在tcl中执行此操作但在php中例如:
答案 2 :(得分:0)
使用ping -c1 <IP address>
非常重要,否则脚本将永远不会因ping过程永远不会结束而停止:)
我的代码使用每个IP的结果数组
for {set i 2 } {$i < 10} {incr i} {
catch {if {[regexp {bytes from} [exec ping -c1 192.168.12.$i]]} {
set flag "reachable"
} else { set flag "not reachable"}
set result(192.168.12.$i) $flag
}
}
parray result
输出:
结果(192.168.12.2)=可到达
结果(192.168.12.3)=可到达
结果(192.168.12.5)=可到达
结果(192.168.12.6)=可到达
结果(192.168.12.7)=可到达
结果(192.168.12.9)=可到达
我没有存储和操作,而是使用了regexp。