这篇文章给大家分享的是有关python如何实现Zabbix-API监控的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
做运维的朋友应该知道,公司IDC机房经常有上架,下架,报修和报废的服务器。如果服务器数量很多的时候很容易造成监控遗漏。
# !/usr/bin/env python # create : sfzhang 20140820 #编码=utf-8import 操作系统,sysimport jsonimport urllib2import datetime, timefrom urllib2 import URLError 时间=nmap_cmd “/壳/机/scan_machine.sh" def runCmd(命令): global mail_cmd=,mail_cmd & # 39; & # 39; & # 39; mail -s “Report 提醒not monitor Hosts of Zabbix", shifeng_zhang88 & lt;,/shell/机/结果/result.txt& # 39; & # 39; & # 39; ,return os.system(命令)runCmd (nmap_cmd) def nmap_host ():=,hostiplst []=,hostnamelst []=,f 文件(& # 39;/shell/机/结果/scan_hostname.log& # 39;) ,for line  f.readlines拷贝(): 时间=hostip 才能;line.split () [0] 时间=hostname 才能;line.split () [1] hostiplst.append才能(hostip) hostnamelst.append才能(主机名) ,hostnamelst.sort () # print hostiplst return hostnamelst ,f.close () def zabbix_host (): ,zabbixhostlst=[] ,# based url 以及required 头=,url “http://192.168.161.128/api_jsonrpc.php" ,header =, {“Content-Type":,“应用程序/json"} # request json=,,data  json.dumps ( {大敌; ,“jsonrpc":“2.0“, “method"才能:,“host.get" “params"才能:{ ,才能“output": [“hostid",“name"), ,才能“filter": {“host":““} },大敌; # auth id ,“auth":“Zabbix Auth ID" ,“id": 1, ,}) # create request 对象=,,request  urllib2.Request (url,数据) ,for key 头:拷贝, ,request.add_header(键,头(例子)) # get host 列表 ,试一试:=,,result  urllib2.urlopen(请求) ,except URLError  as e: ,print “;从而,server could not fulfill ,要求干净,e.reason 其他: 时间=reponse 才能;json.loads (result.read ()) ,result.close () ,# print “Number  of 主机:“,len(响应[& # 39;结果# 39;]) ,for host 拷贝响应[& # 39;结果# 39;): ,,# print “Host ID:“主机(& # 39;hostid& # 39;],“Host ,名字:“主机(& # 39;名字# 39;】 ,,zbxhosts=主机[& # 39;名字# 39;】 ,,zabbixhostlst.append (zbxhosts) zabbixhostlst.sort才能() return 才能;zabbixhostlst  def 主要():=,,nmaphostlst  nmap_host (),=,,zbxhostlst  zabbix_host (),=,diff 列表(设置(nmaphostlst), ^,集(zbxhostlst)),=,content “\ n"=,nomonitorlst [], len (diff), if !=, 0:, for 才能;host  diff:拷贝, ,,if host  nmaphostlst:拷贝, ,,,nomonitorlst.append(主机) ,,,, 其他:大敌; sys.exit才能() # print zbxhostlst=,string & # 39; \ n # 39; . join (nomonitorlst)=,f 文件(& # 39;/shell/机/结果/result.txt& # 39;, & # 39; w # 39;) ,f.write(字符串) ,f.flush () ,f.close () ,runCmd (mail_cmd) if __name__ ==,“__main__":, 之前,main ()