通过Python解析xml监控nowsms脚本

发表时间:2016-02-14 14:10 | 分类:Nagios, Python | 浏览:586 次

nowsms短信彩信框架的admin页面有提供一个xml页面,该页面详细显示modem的各个状态。然后结合nagios,可以很好的监控modem状态。该xml地址类似如:http://192.168.0.115:8800/admin/xmlstatus?username=sijitao&password=sijitao。

20160214112218

如果对python如何解析xml不是很清楚的可以参考这个网址:http://www.runoob.com/python/python-xml.html。

脚本内容

脚本中暂时只需要获取smscstatus中的status,显示ok说明modem接收发送正常,脚本类似如下。

#!/usr/bin/env python
#coding:utf-8

import urllib2
from xml.dom.minidom import parse
import sys
import argparse

parser=argparse.ArgumentParser(description="check nowsms status script.")
parser.add_argument("-H",dest="host",help="Host name argument for servers using host headers")
parser.add_argument("-P",dest="port",default=8800,help="nowsms http port ,default 8800.")
parser.add_argument("-u",dest="username",help="nowsms admin username")
parser.add_argument("-p",dest="password",help="nowsms admin user's password")

args=parser.parse_args()

if not args.host or not args.port or not args.username or not args.password :
    print "Critical - Invalid command,please check."
    sys.exit(2)

url='http://%s:%s/admin/xmlstatus?username=%s&password=%s' % (args.host,args.port,args.username,args.password)
req=urllib2.Request(url)
req.add_header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36")

try:
    response=urllib2.urlopen(req,timeout=5)
    DOMTree = parse(response)
except:
    print "Critical - nowsms admin status get error."
    sys.exit(2)

nowsms = DOMTree.documentElement

smsc = nowsms.getElementsByTagName("SMSCStatus")

for s in smsc:
    #print s.getElementsByTagName('Name')[0].childNodes[0].data
    status = s.getElementsByTagName('Status')[0].childNodes[0].data
    if status != 'OK':
        detail=s.getElementsByTagName('StatusDetail')[0].childNodes[0].data
        print "%s - %s" % (status,detail)
        sys.exit(2)
    else:
        print "%s - nowsms is ok." % status
        sys.exit(0)

脚本部署

1、复制上面的脚本内容,保存到nagios服务端,一般保存在/usr/local/nagios/libexec目录。

2、修改commands.cfg,添加command命令。端口,用户名密码也可以使用参数,因为我这边几台都一样所以就写在command中了。

20160214140511

3、添加service,定义完成后就可以了。

本文标签:

本文链接:http://www.sijitao.net/2363.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

博客历程 留言本 文章归档 网站地图 谷歌地图 浙ICP备13025236号-1
托管于阿里云&七牛云 已加入博客联盟 浙公网安备 33021202000610号
Copyright © 2010-2017 虫虫开源 All Rights Reserved.