pythonでping監視 〜〜その2〜〜

前回、あるNWセグメント内のクライアントにpingを送って常時監視することを試みました。

kittagon.hateblo.jp

その別バージョンです。xargsで並列処理をしています。

# ping_xargs.py

import subprocess, requests, sys

def is_connectable(host):
    # ping = subprocess.Popen(["ping", "3", "-c", "1", host], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
    ping = subprocess.Popen(["ping", "-W", "1", "-c", "1", host], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
    ping.communicate()
    return ping.returncode == 0

ipaddress = sys.argv[2]
num = sys.argv[1]
result = is_connectable(ipaddress)
print(ipaddress)
if result is not True:
    url = "https://my-line-bot-url.com/alert" + num
    requests.get(url)
$ while true; do sed -e 's/,/ /g' IPAdressTable.csv | xargs -L 1 -P20 python ping_xargs.py; done;

特に効率的になったわけではないですが。

しかも今回監視をしたいと思っていたNW設計を聞いたら一番上のL3SWではポート間のICMPを禁止しているらしい。。。
L3SWにぶら下がってるHUB間で全然疎通しないからなんでかなと思っていたら、そもそもpingで監視が出来るNW環境じゃなかった。。