1. 首页
  2. 系统运维
  3. Nagios

通过Python解析xml监控nowsms脚本

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,定义完成后就可以了。

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code