由于搭建的centreon服务器需要监控DNS服务器,上nagios论坛找了几个脚本,感觉用起来不是很方便,自己用python写了一个脚本,分享一下。

#!/usr/bin/env python
import os
import sys
dig = '/usr/bin/dig'
dns_server = 'x.x.x.x'
hostname = ' '.join(sys.argv[1:])
num = len(sys.argv)
answer_num = ' 0\n'
status_ok = 'OK'
status_critical = 'CRITICAL'
status_warning = 'WARN'
def usage():
    print "please inpurt hostname."
    print "syntax:./check_dns.pl hostname...."
if num == 1:
    usage()
    sys.exit(3)
    #获取ANSWER数值的列表
ANSWER_NUMBER = os.popen("%s @%s %s | grep 'ANSWER:' | awk -F , '{print $2}' | awk -F : '{print $2}'" % (dig,dns_server,hostname)).readlines()
    #取出不能解析的域名 --warning
if answer_num in ANSWER_NUMBER:
    #取出answer_number在ANSWER_NUMBER中所有位置的列表
    location = [i for i,j in enumerate(ANSWER_NUMBER) if j == answer_num]
    #通过上面取得的列表找出answer_number所对应的主机列表,并将其转换为字符串
    host = [sys.argv[a+1] for a in location ]
    error_host = ' '.join(host)
    print ("%s- DNS resolution for %s" % (status_warning,error_host))
    sys.exit(1)
    #服务器连接超时    --critical
elif bool(ANSWER_NUMBER) is False:
    print ("%s- unconnect DNS server %s" % (status_critical,dns_server))
    sys.exit(2)
    #服务器正常状态    --ok
else:
    print ("%s- DNS resolution for %s" % (status_ok,hostname))
    sys.exit(0)


 有什么问题希望大家能指出,交流!