查询公司资产数据库中的主机是否在zabbix的监控中
2013-01-25 17:22
633 查看
由于需要知道公司资产中的相关服务器是否在zabbix的监控中,有些是不需要监控的,有些是资产更新之后zabbix没有监控的,要是一个个的去对比,比较麻烦,闲来无事,写了一个脚本,对比资产中的机器是否需要zabbix监控,然后发邮件给相关的负责人,及时的更新zabbix监控主机。主要原理是用MySQLdb模块查出zabbix中的主机和资产数据库中的主机列表,然后用列表的集合比较set来找出两个列表中不同的值,然后查看确定是在那个列表中,以不同的信息标识发邮件给负责人。
本文出自 “王伟” 博客,请务必保留此出处http://wangwei007.blog.51cto.com/68019/1126428
#!/bin/env python # -*- coding: utf-8 -*- import os,sys,MySQLdb,smtplib,datetime,time from email.mime.text import MIMEText def send_mail(content): ############# #要发给谁,这里发给1个人 mailto_list=["xxxxx@139.com"] ##################### #设置服务器,用户名、口令以及邮箱的后缀 mail_host="mail.xxx.cn" mail_user="zabbix" mail_pass="xxx" mail_postfix="xxxx.cn" ###################### ''''' to_list:发给谁 sub:主题 content:内容 send_mail("aaa@126.com","sub","content") ''' me=mail_user+"<"+mail_user+"@"+mail_postfix+">" msg = MIMEText(content,_charset='utf8') msg['Subject'] = u"zabbix主机检查-%s" % datetime.date.today() msg['From'] = me msg['To'] = ";".join(mailto_list) try: s = smtplib.SMTP() s.connect(mail_host) s.login(mail_user,mail_pass) s.sendmail(me, mailto_list, msg.as_string()) s.close() except Exception, e: sys.exit() def conn_mysql(ip,user,passwd,sql): try: conn = MySQLdb.connect(host = ip,user = user,passwd = passwd,connect_timeout=20) cursor = conn.cursor() cursor.execute(sql) alldata = cursor.fetchall() cursor.close() conn.close() return alldata except: return 0 def center_host():#查出资产中需要监控的IP ip = '192.168.1.11' user = 'root' passwd = 'xxxxx' sql="SELECT ip FROM zichan.hosts WHERE STATUS=0" center_hostlist = conn_mysql(ip,user,passwd,sql) center = [] for center_host in center_hostlist: center.append(center_host[0]) center.sort() return center def zabbix_host():#查出zabbix数据库中正在监控的IP ip = '192.168.1.2' user = 'root' passwd = '1q2w3e4r' sql="SELECT HOST FROM zabbix.hosts WHERE STATUS=0" zabbix_hostlist = conn_mysql(ip,user,passwd,sql) zabbix = [] for zabbix_host in zabbix_hostlist: zabbix.append(zabbix_host[0]) zabbix.sort() return zabbix def main(): center_hostlist = center_host() zabbix_hostlist = zabbix_host() #center_hostlist = ['192.168.1.21'] #zabbix_hostlist = ['192.168.1.43'] difference = list(set(center_hostlist) ^ set(zabbix_hostlist)) content = "\n" if len(difference) != 0: for host in difference: if host in center_hostlist: content = content + "%s_not_In_zabbix" % host + "\n" elif host in zabbix_hostlist: content = content + "%s_not_Out_zabbix" % host + "\n" else: sys.exit() send_mail(content) if __name__ == "__main__": main()
本文出自 “王伟” 博客,请务必保留此出处http://wangwei007.blog.51cto.com/68019/1126428
相关文章推荐
- Zabbix通过ping监控主机主机是否在线
- 安装zabbix并使用无agent监控交换机与检查主机是否存活。
- zabbix监控tomcat和相关模板(导入直接可用),一个主机监控一个tomcat
- 在zabbix中添加监控主机及Items
- SQL语句,查询数据库里是否存在某个表
- zabbix3.0.4利用iostat工具监控centos主机磁盘IO
- zabbix监控tomcat主机,并自动部署新主机
- zabbix3.0.4监控linux主机cpu使用率超过90%的时候报警
- Zabbix中使用ICMP ping来判断主机是否存活的问题
- zabbix 监控 oracle 数据库
- 这两个SQL语句都是查询数据库里头是否存在某个表的语句
- zabbix 监控windows 主机和华为交换机 推荐
- 查询当前数据库是否存在阻塞的情况
- SQL语句,查询数据库里是否存在某个表
- 使用zabbix监控TCP连接状态, Zabbix之监控虚拟主机EXSI
- zabbix的主动模式和被动模式、添加监控主机、添加自定义模板、处理图形中的乱码、自动发现
- 为分布式监控系统Zabbix配置TiDB数据库
- zabbix监控iptables防火墙状态之是否有丢弃的包(攻-击)
- zabbix 监控客户端数据库 zabbix客户端
- python调用zabbix的api接口添加主机、查询组、主机、模板