2440 发表于 2019-1-26 09:48:38

查询公司资产数据库中的主机是否在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+""
[*]    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)
[*]    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)
[*]    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()




页: [1]
查看完整版本: 查询公司资产数据库中的主机是否在zabbix的监控中