博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
查询公司资产数据库中的主机是否在zabbix的监控中
阅读量:5888 次
发布时间:2019-06-19

本文共 2455 字,大约阅读时间需要 8 分钟。

 由于需要知道公司资产中的相关服务器是否在zabbix的监控中,有些是不需要监控的,有些是资产更新之后zabbix没有监控的,要是一个个的去对比,比较麻烦,闲来无事,写了一个脚本,对比资产中的机器是否需要zabbix监控,然后发邮件给相关的负责人,及时的更新zabbix监控主机。主要原理是用MySQLdb模块查出zabbix中的主机和资产数据库中的主机列表,然后用列表的集合比较set来找出两个列表中不同的值,然后查看确定是在那个列表中,以不同的信息标识发邮件给负责人。

 
  1. #!/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3.  
  4. import os,sys,MySQLdb,smtplib,datetime,time  
  5. from email.mime.text import MIMEText  
  6.  
  7. def send_mail(content):  
  8.     #############  
  9.     #要发给谁,这里发给1个人  
  10.     mailto_list=["xxxxx@139.com"]  
  11.     #####################  
  12.     #设置服务器,用户名、口令以及邮箱的后缀  
  13.     mail_host="mail.xxx.cn" 
  14.     mail_user="zabbix" 
  15.     mail_pass="xxx" 
  16.     mail_postfix="xxxx.cn" 
  17.     ######################  
  18.     '''''  
  19.     to_list:发给谁  
  20.     sub:主题  
  21.     content:内容  
  22.     send_mail("aaa@126.com","sub","content")  
  23.     ''' 
  24.     me=mail_user+"<"+mail_user+"@"+mail_postfix+">" 
  25.     msg = MIMEText(content,_charset='utf8')  
  26.     msg['Subject'] = u"zabbix主机检查-%s" % datetime.date.today()  
  27.     msg['From'] = me  
  28.     msg['To'] = ";".join(mailto_list)  
  29.     try:  
  30.         s = smtplib.SMTP()  
  31.         s.connect(mail_host)  
  32.         s.login(mail_user,mail_pass)  
  33.         s.sendmail(me, mailto_list, msg.as_string())  
  34.         s.close()  
  35.     except Exception, e:  
  36.         sys.exit()  
  37.  
  38. def conn_mysql(ip,user,passwd,sql):  
  39.     try:  
  40.         conn = MySQLdb.connect(host = ip,user = user,passwd = passwd,connect_timeout=20)  
  41.         cursor = conn.cursor()   
  42.         cursor.execute(sql)  
  43.         alldata = cursor.fetchall()  
  44.         cursor.close()  
  45.         conn.close()  
  46.         return alldata  
  47.     except:  
  48.         return 0 
  49.  
  50. def center_host():#查出资产中需要监控的IP  
  51.     ip = '192.168.1.11' 
  52.     user = 'root' 
  53.     passwd = 'xxxxx' 
  54.     sql="SELECT ip FROM zichan.hosts WHERE STATUS=0" 
  55.     center_hostlist = conn_mysql(ip,user,passwd,sql)  
  56.     center = []  
  57.     for center_host in center_hostlist:  
  58.         center.append(center_host[0])  
  59.     center.sort()  
  60.     return center  
  61.  
  62. def zabbix_host():#查出zabbix数据库中正在监控的IP  
  63.     ip = '192.168.1.2' 
  64.     user = 'root' 
  65.     passwd = '1q2w3e4r' 
  66.     sql="SELECT HOST FROM zabbix.hosts WHERE STATUS=0" 
  67.     zabbix_hostlist = conn_mysql(ip,user,passwd,sql)  
  68.     zabbix = []  
  69.     for zabbix_host in zabbix_hostlist:  
  70.         zabbix.append(zabbix_host[0])  
  71.     zabbix.sort()  
  72.     return zabbix  
  73.  
  74. def main():  
  75.     center_hostlist = center_host()  
  76.     zabbix_hostlist = zabbix_host()  
  77.     #center_hostlist = ['192.168.1.21']  
  78.     #zabbix_hostlist = ['192.168.1.43']  
  79.     difference = list(set(center_hostlist) ^ set(zabbix_hostlist))  
  80.     content = "\n" 
  81.     if len(difference) != 0:  
  82.         for host in difference:  
  83.             if host in center_hostlist:  
  84.                 content = content + "%s_not_In_zabbix" % host + "\n" 
  85.             elif host in zabbix_hostlist:  
  86.                 content = content + "%s_not_Out_zabbix" % host + "\n" 
  87.     else:  
  88.         sys.exit()  
  89.     send_mail(content)  
  90.  
  91. if __name__ == "__main__":  
  92.     main()  
本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/1126428,如需转载请自行联系原作者
你可能感兴趣的文章
MSSQL跨服务器数据库查询
查看>>
WeChat Official Account Admin Platform API Introduction
查看>>
C语言写单链表的创建、释放、追加(即总是在最后的位置增加节点)
查看>>
poj1635
查看>>
C# LINQ详解(一)
查看>>
视频直播点播nginx-rtmp开发手册中文版
查看>>
iphone 添加CFNetwork.framework时,报错 socket
查看>>
ruby学习总结04
查看>>
Binary Tree Paths
查看>>
RESTful 架构详解(转)
查看>>
Ueditor自定义ftp上传
查看>>
线程以及多线程
查看>>
PHP队列的实现
查看>>
单点登录加验证码例子
查看>>
[T-SQL]从变量与数据类型说起
查看>>
稀疏自动编码之反向传播算法(BP)
查看>>
二叉搜索树转换成双向链表
查看>>
会员数据化运营
查看>>
WebLogic和Tomcat的区别
查看>>
java类中 获取服务器的IP 端口
查看>>