3

我正在尝试在我的路由器中 ping 一些 IP 地址。我使用这段代码:

for {set n 0} {$n < 10} {incr n} {puts [exec "ping 199.99.$n.1]}

但这将显示输出。问题是我不想看到输出。我想将该输出发送到另一个变量中,并使用“regexp”搜索变量的内容并获得结果,然后完成剩下的事情。但我不知道我该怎么做。

4

3 回答 3

9

使用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"]
}
于 2013-04-06T08:40:08.267 回答
0

尝试使用 -c 标志调用 ping:ping -c 1 10.0.1.1

不知道如何在 tcl 但在 php 中执行此操作,例如:

于 2013-04-06T04:31:27.237 回答
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。

于 2013-10-01T14:13:54.320 回答