作用:【定时自动更改zabbix_web中监控主机的ip,其他信息不变】----前提是之前手动添加过主机信息 zabbix被监控主机没有固定ip,我们通过解析域名得到最新的ip,域名解析以后将命令结果输入到txt中,从txt中匹配出ip地址,把zabbix中的ip地址更改为此ip。步骤:
【0】调用系统命令,解析域名,将命令运行结果保存到txt文件中
【1】从txt文件中提取字符串,去掉回车符 空行,将多有字符串拼接在一起,生产一个字符串(无空行、无回车符)
【2】通过正则匹配出ip地址
【3】使用pymysql,连接到zabbix数据库,更新数据库中的IP.[我们事先要了解zabbix的数据库结构,ip存放的表,如何更改ip,使其他信息不变]
执行:在linux下执行不会报错,在windows下执行的时候因为txt路径转义符的原因报错,需要添加转义符

脚本内容:
#!/usr/bin/python# -*- coding:utf-8 -*-"""作者:pzl960504@163.com作用:【定时自动更改zabbix_web中监控主机的ip,其他信息不变】----前提是之前手动添加过主机信息zabbix被监控主机没有固定ip,我们通过解析域名得到最新的ip,域名解析以后将命令结果输入到txt中,从txt中匹配出ip地址,把zabbix中的ip地址更改为此ip。步骤:【1】从txt文件中提取字符串,去掉回车符 空行,将多有字符串拼接在一起,生产一个字符串(无空行、无回车符)【2】通过正则匹配出ip地址【3】使用pymysql,连接到zabbix数据库,更新数据库中的IP.[我们事先要了解zabbix的数据库结构,ip存放的表,如何更改ip,使其他信息不变]执行:在linux下执行不会报错,在windows下执行的时候因为txt路径转义符的原因报错,需要添加转义符"""import re # 解析ip时需要import pymysql # 修改数据库数据需要import os#定义函数,使域名作为为变量def auto_change_zabbix_web_ip(ddns):#执行系统命令,将命令的结果存储到txt文件中path='/dig/'+ddns+'.txt'os.system('rm -rf '+ path+'&& dig ' + ddns + ' >> dig/' + ddns + '.txt')# 【1】读取文件with open(path) as file:lines = file.readlines() # 读取每一行a = '' # 空字符(中间不加空格)for line in lines:a += line.strip() # strip()是去掉每行末尾的换行符\n 1c = a.split() # 将a分割成单独的字符串 2b = ''.join(c) # 将c的每个字符直接连接 3txt_ip = b # 定义需要解析的字符串# 【2】正则匹配语句re_str = re.compile(r'(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)')re_ip = re_str.search(txt_ip)ip = re_ip.group(0)input_ip = ip# 【3】数据修改# 创建连接,定义连接信息[zabbix数据库信息]conn = pymysql.connect(host="*.*.*.*",user="zabbix",password="password")# 创建游标cursor = conn.cursor()# 定义sql语句,并执行if ddns=="域名1":update = "UPDATE zabbix.interface set ip='" + input_ip + "' where hostid=10414"if ddns=="域名2":update = "UPDATE zabbix.interface set ip='" + input_ip + "' where hostid=10413"cursor.execute(update)# 提交事务conn.commit()# 释放游标cursor.close()# 关闭连接conn.close()#调用函数执行auto_change_zabbix_web_ip("域名1")auto_change_zabbix_web_ip("域名2")
文章转载自小小IT仔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




