查询公司资产数据库中的主机是否在zabbix的监控中
由于需要知道公司资产中的相关服务器是否在zabbix的监控中,有些是不需要监控的,有些是资产更新之后zabbix没有监控的,要是一个个的去对比,比较麻烦,闲来无事,写了一个脚本,对比资产中的机器是否需要zabbix监控,然后发邮件给相关的负责人,及时的更新zabbix监控主机。主要原理是用MySQLdb模块查出zabbix中的主机和资产数据库中的主机列表,然后用列表的集合比较set来找出两个列表中不同的值,然后查看确定是在那个列表中,以不同的信息标识发邮件给负责人。
- #!/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()
查询公司资产数据库中的主机是否在zabbix的监控中相关推荐
- GNS3连接VMware中虚拟主机,能相互ping通
这个实验是在51cto学院,諶老师的视频中看到的,把实验做完了,记录一下. 1.实验中的pc可以使用clone,虚拟多台主机进行实验. 2.实验中Vnet网卡的模式与NAT,BRIDGE,HOST-O ...
- mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息
前言 有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢? 在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUM ...
- egg mysql 连表查询_Egg中使用Sequelize框架关联查询Mysql数据库
Sequelize视频教程_Eggjs仿小米商城企业级Nodejs项目实战视频教程: https://www.itying.com/goods-941.html 一.Sequelize简介 前面的章节 ...
- Go语言中查询SqlServer数据库
一.Go语言中查询MsSQL数据库: // main.go package mainimport ("database/sql""fmt""log&q ...
- php如何查询数据库,如何在php中查询mysql数据库数据
如何在php中查询mysql数据库数据 发布时间:2020-07-21 09:23:55 来源:亿速云 阅读:81 作者:Leah 本篇文章给大家分享的是有关如何在php中查询mysql数据库数据,小 ...
- excel查询mysql数据库表,excel创建数据表/查询mysql数据库中所有表名
excel两个表格,数据库表与专门查询该数据库信息的表.在查询表中以多个项目进行查询符合条件的数据. 可以用"筛选"这个功能,在菜单里,对两个列进行筛选,符合条件的就会显示出来.很 ...
- 查询mysql数据库表占用空间大小_查看 MySQL 数据库中每个表占用的空间大小-阿里云开发者社区...
如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE ...
- php查询mysql数据库_php中如何查询mysql数据库数据?
php中查询mysql数据库数据的方法:首先用navicat新建数据库并建表:然后添加数据并与数据库连接:接着用[mysql_select_db]函数选择要查询的数据库:最后将文件在浏览器中打开即可. ...
- php查询mysql放到数组中_php查询mysql数据库并将结果保存到数组的方法
本文实例讲述了php查询mysql数据库并将结果保存到数组的方法..具体分析如下: 这里主要用到了mysql_fetch_assoc函数 mysql_fetch_assoc语法如下: array my ...
最新文章
- 【jsp】使用get方法传值的格式
- Linux之因BASH造成的键盘错误和环境问题
- 【SQL】SQL语句多表联合查询
- python什么模块动态调用链接库_python 动态调用模块、类、方法(django项目)
- Linux Redis 安装
- 使用 Github Actions artifact 在 workflow job 之间共享数据
- 【django之admin,单例模式】
- php case 多个条件判断语句,Shell case语句(多分支条件判断)
- 计算机打印基础知识教程,员工计算机基础知识普及教程(ppt 84页)
- 十年沉淀,回头发觉我当年面试 “Android,深入分析
- TypeError: only integer tensors of a single element can be converted to an indexValueError: only one
- Incremental Learning of Object Detectors without Catastrophic Forgetting详解
- 西瓜书(周志华)课后习题答案
- FPGA存储块,有没有使能Primitives output Register作用
- 企鹅公司为企业与单位推出的一款基于其业务交流平台,该款企业微信mac版可以很轻松的进行企业级沟通
- Centos安装python3并设为默认
- linux磁盘配额步骤详细步骤,Linux磁盘配额命令及步骤.doc
- 案例分享|国内某大行澳门分行数据平台案例
- 2021-2027中国18650锂电池市场现状及未来发展趋势
- Notification桌面提醒:HTML5新功能
热门文章
- javase基础复习攻略《六》
- 万源之源之drupal7
- 使用FileDialog查看文件内容
- apipost提示error:invalid protocol的解决方案
- 05-02 docker 安装与配置-CentOS
- js获取下月时间_JS获取上月,本月,下月的开始时间与结束时间
- python反向代理服务器_主机、服务器,代理服务器,反向代理服务器理解(自用)...
- 服务器x不会下载mysql_MySQL_解决MySQL数据库死掉以及拒绝服务的方法,从Mysql 5.x的某个版本之后,MySQ - phpStudy...
- 机器学习方向企业面试题(一)
- FTP文件传输协议介绍和常用命令