今天因为工作需求,要在报盘机器上(windows系统)检测与上手连接的网络可用性,使用zabbix自身的功能并不能解决这个问题。所以一开始考虑使用python脚本调系统的ping命令来检测
然后再使用zabbix来监控就可完成任务。
网上查了下,发现使用subprocess和shlex可以完成检测,于是参考着整了个小脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/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脚本就能轻松实现,惊喜不已!
把执行结果重定向到一个以时间戳命名的文件里面,里面以时间分割,便于追踪结果。
1
2
3
4
5
|
@echo
off
set THISDATE=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
set IP=127.0.0.1
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
本文转自 青苗飞扬 51CTO博客,原文链接:http://blog.51cto.com/qingmiao/2052657