Ping.py †家庭内に何台もPCもあって、そのIPの管理をDHCPでしている。 時々、sshで入ろうとすると、はてIPは何番じゃろうということになる。 IPがある程度めぼしがついていれば、pingをかけるけど、1から255まで手動で調べるのはめんどくさい。仕方がないので、ipを1,255まで調べるスクリプトを書く 知人から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()などをすると、その値をスクリプトの取り込める。後は、正規表現で似るなり焼くなり出来ます。 |