Tips

IT技術系Tips

複数端末にpingする(Python3)

隣の人のPC上で動いてるVMに乗り込んで作業するはずだったんだけど
IP変わったらしく、繋がらない。
だいたい範囲わかってるから乱れ打ち。

ちょっと無理する

ソース

In [1]: import os, subprocess

In [2]: [x + ":" + str(subprocess.call(["ping", "-c", "1", "-t", "1", x], stdout=open(os.devnull,"w"))) for x in ["192.168.111." + str(y) for y in range(50,55)]]
Out[6]: 
['192.168.111.50:0',
 '192.168.111.51:2',
 '192.168.111.52:2',
 '192.168.111.53:2',
 '192.168.111.54:2']

わけわからん。

普通に書いた

ソース

import os
import subprocess

# 192.168.111.50 〜 192.168.111.54のリストを作成
L = ["192.168.111." + str(x) for x in range(50, 55)]
result = []
for ip in L:
    # pingを打って結果(ステータスコード)をipと共にリストに格納
    # 標準出力を/dev/nullへ、pingの回数は1回、タイムアウト1秒
    #引数の都合上、Linux系じゃないと動かない
    r = subprocess.call(["ping", "-c", "1", "-t", "1", ip], stdout=open(os.devnull, "w"))
    result.append("%s:%d" % (ip, r))

#表示
[print(x) for x in result]

結果

192.168.111.50:0
192.168.111.51:2
192.168.111.52:2
192.168.111.53:2
192.168.111.54:2

遅い。最悪ping数*1秒かかる。
fpingコマンド使えばわざわざこんなことしn・・・