[[プログラム周り]]

*Ping.py [#m51d4622]
家庭内に何台もPCもあって、そのIPの管理をDHCPでしている。
時々、sshで入ろうとすると、はてIPは何番じゃろうということになる。
IPがある程度めぼしがついていれば、pingをかけるけど、1から255まで手動で調べるのはめんどくさい。仕方がないので、ipを1,255まで調べるスクリプトを書く

知人から&color(red){IPはメモに書いておけ};という突っ込みがきた。まさにその通りだ。

 #!/usr/local/bin/python2.4
 import os,re
 for i in range(1,255):
     cmd='ping -c 1 -W 1 192.168.1.%d' % i
     print cmd
     (r,o)=os.popen2(cmd)
     line=o.read()
     if re.search('ttl',line):
         print line

こんな感じで返事が返ってくる。
ping は,-cで問い合わせカウントを抑制し、-Wでタイムアウトまでの秒数を設定する。

 ing -c 1 -W 1 192.168.1.1
 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
 64 バイト応答 送信元 192.168.1.1: icmp_seq=0 ttl=64 時間=0.573ミリ秒
 
 --- 192.168.1.1 ping 統計 ---
 送信パケット数 1, 受信パケット数 1, パケット損失 0%, 時間 0ミリ秒
 rtt 最小/平均/最大/mdev = 0.573/0.573/0.573/0.000ミリ秒, pipe 2
 
 ping -c 1 -W 1 192.168.1.2
 ping -c 1 -W 1 192.168.1.3
 ping -c 1 -W 1 192.168.1.4
 ping -c 1 -W 1 192.168.1.5
 ping -c 1 -W 1 192.168.1.6
 ping -c 1 -W 1 192.168.1.7
 ping -c 1 -W 1 192.168.1.8
 ping -c 1 -W 1 192.168.1.9
 ping -c 1 -W 1 192.168.1.10
 PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
 64 バイト応答 送信元 192.168.1.10: icmp_seq=0 ttl=64 時間=7.66ミリ秒
 
 --- 192.168.1.10 ping 統計 ---
 送信パケット数 1, 受信パケット数 1, パケット損失 0%, 時間 0ミリ秒
 rtt 最小/平均/最大/mdev = 7.665/7.665/7.665/0.000ミリ秒, pipe 2

 (stdin,stdout)=os.popen2("ls -al")
で標準入力(=stdin)と、標準出力(=stdout)がfile形式で取れるので、あとはstdout.read()などをすると、その値をスクリプトの取り込める。後は、正規表現で似るなり焼くなり出来ます。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS