使用python和批處理bat腳本ping檢測主機連通性
阿新 • • 發佈:2017-12-20
python bat 今天因為工作需求,要在報盤機器上(windows系統)檢測與上手連接的網絡可用性,使用zabbix自身的功能並不能解決這個問題。所以一開始考慮使用python腳本調系統的ping命令來檢測
然後再使用zabbix來監控就可完成任務。
網上查了下,發現使用subprocess和shlex可以完成檢測,於是參考著整了個小腳本
#!/usr/bin/env python # -*- coding: utf-8 -*- #author:qingmiao import subprocess import shlex cmd = "ping -n 1 127.0.0.1" args = shlex.split(cmd) try: subprocess.check_call(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) print "1" except subprocess.CalledProcessError: print "0"
執行後如下圖所示,檢測成功返回1,否則返回0
後來發現這種方式沒有落地成文件,不方便追蹤。試了好多方法,最終發現使用windows自帶的bat腳本就能輕松實現,驚喜不已!
把執行結果重定向到一個以時間戳命名的文件裏面,裏面以時間分割,便於追蹤結果。
@echo off set THISDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2% set IP=10.10.83.131 echo %TIME:~0,8% >>D:\test\ping_result_%THISDATE%.txt (ping %IP% -n 1 | find "TTL" >>D:\test\ping_result_%THISDATE%.txt)&& echo 1 || echo 0
執行結果如下,同樣可以使用zabbix來調用這個腳本
BINGO
使用python和批處理bat腳本ping檢測主機連通性