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

  1. #!/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os,sys,MySQLdb,smtplib,datetime,time
  4. from email.mime.text import MIMEText
  5. def send_mail(content):
  6. #############
  7. #要发给谁,这里发给1个人
  8. mailto_list=["xxxxx@139.com"]
  9. #####################
  10. #设置服务器,用户名、口令以及邮箱的后缀
  11. mail_host="mail.xxx.cn"
  12. mail_user="zabbix"
  13. mail_pass="xxx"
  14. mail_postfix="xxxx.cn"
  15. ######################
  16. '''''
  17. to_list:发给谁
  18. sub:主题
  19. content:内容
  20. send_mail("aaa@126.com","sub","content")
  21. '''
  22. me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
  23. msg = MIMEText(content,_charset='utf8')
  24. msg['Subject'] = u"zabbix主机检查-%s" % datetime.date.today()
  25. msg['From'] = me
  26. msg['To'] = ";".join(mailto_list)
  27. try:
  28. s = smtplib.SMTP()
  29. s.connect(mail_host)
  30. s.login(mail_user,mail_pass)
  31. s.sendmail(me, mailto_list, msg.as_string())
  32. s.close()
  33. except Exception, e:
  34. sys.exit()
  35. def conn_mysql(ip,user,passwd,sql):
  36. try:
  37. conn = MySQLdb.connect(host = ip,user = user,passwd = passwd,connect_timeout=20)
  38. cursor = conn.cursor()
  39. cursor.execute(sql)
  40. alldata = cursor.fetchall()
  41. cursor.close()
  42. conn.close()
  43. return alldata
  44. except:
  45. return 0
  46. def center_host():#查出资产中需要监控的IP
  47. ip = '192.168.1.11'
  48. user = 'root'
  49. passwd = 'xxxxx'
  50. sql="SELECT ip FROM zichan.hosts WHERE STATUS=0"
  51. center_hostlist = conn_mysql(ip,user,passwd,sql)
  52. center = []
  53. for center_host in center_hostlist:
  54. center.append(center_host[0])
  55. center.sort()
  56. return center
  57. def zabbix_host():#查出zabbix数据库中正在监控的IP
  58. ip = '192.168.1.2'
  59. user = 'root'
  60. passwd = '1q2w3e4r'
  61. sql="SELECT HOST FROM zabbix.hosts WHERE STATUS=0"
  62. zabbix_hostlist = conn_mysql(ip,user,passwd,sql)
  63. zabbix = []
  64. for zabbix_host in zabbix_hostlist:
  65. zabbix.append(zabbix_host[0])
  66. zabbix.sort()
  67. return zabbix
  68. def main():
  69. center_hostlist = center_host()
  70. zabbix_hostlist = zabbix_host()
  71. #center_hostlist = ['192.168.1.21']
  72. #zabbix_hostlist = ['192.168.1.43']
  73. difference = list(set(center_hostlist) ^ set(zabbix_hostlist))
  74. content = "\n"
  75. if len(difference) != 0:
  76. for host in difference:
  77. if host in center_hostlist:
  78. content = content + "%s_not_In_zabbix" % host + "\n"
  79. elif host in zabbix_hostlist:
  80. content = content + "%s_not_Out_zabbix" % host + "\n"
  81. else:
  82. sys.exit()
  83. send_mail(content)
  84. if __name__ == "__main__":
  85. main()
本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/1126428,如需转载请自行联系原作者

查询公司资产数据库中的主机是否在zabbix的监控中相关推荐

  1. GNS3连接VMware中虚拟主机,能相互ping通

    这个实验是在51cto学院,諶老师的视频中看到的,把实验做完了,记录一下. 1.实验中的pc可以使用clone,虚拟多台主机进行实验. 2.实验中Vnet网卡的模式与NAT,BRIDGE,HOST-O ...

  2. mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息

    前言 有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢? 在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUM ...

  3. egg mysql 连表查询_Egg中使用Sequelize框架关联查询Mysql数据库

    Sequelize视频教程_Eggjs仿小米商城企业级Nodejs项目实战视频教程: https://www.itying.com/goods-941.html 一.Sequelize简介 前面的章节 ...

  4. Go语言中查询SqlServer数据库

    一.Go语言中查询MsSQL数据库: // main.go package mainimport ("database/sql""fmt""log&q ...

  5. php如何查询数据库,如何在php中查询mysql数据库数据

    如何在php中查询mysql数据库数据 发布时间:2020-07-21 09:23:55 来源:亿速云 阅读:81 作者:Leah 本篇文章给大家分享的是有关如何在php中查询mysql数据库数据,小 ...

  6. excel查询mysql数据库表,excel创建数据表/查询mysql数据库中所有表名

    excel两个表格,数据库表与专门查询该数据库信息的表.在查询表中以多个项目进行查询符合条件的数据. 可以用"筛选"这个功能,在菜单里,对两个列进行筛选,符合条件的就会显示出来.很 ...

  7. 查询mysql数据库表占用空间大小_查看 MySQL 数据库中每个表占用的空间大小-阿里云开发者社区...

    如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE ...

  8. php查询mysql数据库_php中如何查询mysql数据库数据?

    php中查询mysql数据库数据的方法:首先用navicat新建数据库并建表:然后添加数据并与数据库连接:接着用[mysql_select_db]函数选择要查询的数据库:最后将文件在浏览器中打开即可. ...

  9. php查询mysql放到数组中_php查询mysql数据库并将结果保存到数组的方法

    本文实例讲述了php查询mysql数据库并将结果保存到数组的方法..具体分析如下: 这里主要用到了mysql_fetch_assoc函数 mysql_fetch_assoc语法如下: array my ...

最新文章

  1. 【jsp】使用get方法传值的格式
  2. Linux之因BASH造成的键盘错误和环境问题
  3. 【SQL】SQL语句多表联合查询
  4. python什么模块动态调用链接库_python 动态调用模块、类、方法(django项目)
  5. Linux Redis 安装
  6. 使用 Github Actions artifact 在 workflow job 之间共享数据
  7. 【django之admin,单例模式】
  8. php case 多个条件判断语句,Shell case语句(多分支条件判断)
  9. 计算机打印基础知识教程,员工计算机基础知识普及教程(ppt 84页)
  10. 十年沉淀,回头发觉我当年面试 “Android,深入分析
  11. TypeError: only integer tensors of a single element can be converted to an indexValueError: only one
  12. Incremental Learning of Object Detectors without Catastrophic Forgetting详解
  13. 西瓜书(周志华)课后习题答案
  14. FPGA存储块,有没有使能Primitives output Register作用
  15. 企鹅公司为企业与单位推出的一款基于其业务交流平台,该款企业微信mac版可以很轻松的进行企业级沟通
  16. Centos安装python3并设为默认
  17. linux磁盘配额步骤详细步骤,Linux磁盘配额命令及步骤.doc
  18. 案例分享|国内某大行澳门分行数据平台案例
  19. 2021-2027中国18650锂电池市场现状及未来发展趋势
  20. Notification桌面提醒:HTML5新功能

热门文章

  1. javase基础复习攻略《六》
  2. 万源之源之drupal7
  3. 使用FileDialog查看文件内容
  4. apipost提示error:invalid protocol的解决方案
  5. 05-02 docker 安装与配置-CentOS
  6. js获取下月时间_JS获取上月,本月,下月的开始时间与结束时间
  7. python反向代理服务器_主机、服务器,代理服务器,反向代理服务器理解(自用)...
  8. 服务器x不会下载mysql_MySQL_解决MySQL数据库死掉以及拒绝服务的方法,从Mysql 5.x的某个版本之后,MySQ - phpStudy...
  9. 机器学习方向企业面试题(一)
  10. FTP文件传输协议介绍和常用命令