1. 程式人生 > >使用python和批處理bat腳本ping檢測主機連通性

使用python和批處理bat腳本ping檢測主機連通性

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檢測主機連通性