プログラム周り

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()などをすると、その値をスクリプトの取り込める。後は、正規表現で似るなり焼くなり出来ます。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-02-01 (日) 14:38:23 (3364d)