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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

 由于需要知道公司资产中的相关服务器是否在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,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
运维 网络安全 数据库
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(一)
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)
463 0
|
存储 数据库 Python
Django 搭建CMDB系统完整[4](主菜单、资产数据库表)
修改main_page主菜单 data = [{"accessPath":"","checked":false,"delFlag":0,"parentID":1,"resourceCode":"","resourceDesc":"","resource...
1613 0
|
7天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
43 2
|
23天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
105 0
|
23天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
23天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
25天前
|
存储 关系型数据库 MySQL
数据库字符编码MySQL中使用UTF-8还是UTFB4
数据库字符编码MySQL中使用UTF-8还是UTFB4
20 0
|
4天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
14 0
|
28天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
19天前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
48 0

热门文章

最新文章

推荐镜像

更多