pythonでping監視 〜〜その2〜〜
前回、あるNWセグメント内のクライアントにpingを送って常時監視することを試みました。
その別バージョンです。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環境じゃなかった。。