2013-04-06 71 views
3

我想ping我的路由器中的一些IP地址。我用這個代碼:發送「ping」輸出到一個變量

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

但是這會顯示輸出。 問題是我不想看到輸出。我想將這個輸出發送到另一個變量中,然後用「regexp」搜索變量的內容並獲得結果,並完成故事的其餘部分。 但我不知道我該怎麼做。

回答

0

嘗試調用-c標誌的平安:平安 -c 1 10.0.1.1

不知道如何做到這一點的,但TCL在PHP例如:

8

使用set命令。 puts命令打印它的參數。

set pingOutput [exec ping "199.99.$n.1"] 

或者,如果你想在一個變量的所有IP的結果append

set allPingOutput "" 
for {set n 0} {$n < 10} {incr n} { 
    append allPingOutput [exec ping "199.99.$n.1"] 
} 
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 

的結果數組OUTPUT:

結果(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。