使用python和批处理bat脚本ping检测主机连通性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python和批处理bat脚本ping检测主机连通性相关的知识,希望对你有一定的参考价值。

    今天因为工作需求,要在报盘机器上(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检测主机连通性的主要内容,如果未能解决你的问题,请参考以下文章

通过ping命令检测主机的存活性

linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)

批量检查主机名是不是有效

python运维----检测主机IP ping不通则发邮件

Python多线程批量Ping主机IP的脚本

想写一个bat脚本ping多个ip地址