首页 > 编程语言 >通过python核对zabbix 主机是否被监控

通过python核对zabbix 主机是否被监控

时间:2022-10-19 14:01:43浏览次数:46  
标签:python ip json auth zabbix 核对 监控 iplist

     主机监控和资产管理应该是一套完整的系统,但当公司还不具规模或系统建设不完善。两套数据相互独立。可能会漏掉部分主机监控,出现故障就显得尤为尴尬(如磁盘满了,未及时报警这类低级错误)。因此我们需要定期检查主机监控是否遗漏。

     这里有个问题是,我们在 zabbix 中监控的主机可能并不是以 ip 作为主机名进行监控的,而是主机名。直接通过 zabbx api 获取到的是主机名。需要添加一个过滤参数:“selectInterfaces” 将 ip 打印出来,与现有ip 资产列表比对更加方便。实现如下:

通过python核对zabbix 主机是否被监控_主机名

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#检查ip是否在zabbix中, 用于监控核对。

import json
import requests

#zabbix api
url = 'http://xxx.com/api_jsonrpc.php'
header = {'Content-Type': 'application/json'}

##验证
auth = {
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "xxx",
"password": "xxx"
},
"id": 1,
"auth": None,
}

# 获取token
def getkey():
response = requests.post(url, data=json.dumps(auth), headers=header)
authid = json.loads(response.text)['result'] ### auth的id
return authid

def gethostip():
postdata = {
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["host"],
#关键参数获取 ip
"selectInterfaces": [
"ip"
]
},
"auth": getkey(),
"id": 0,
}
r = requests.post(url, data=json.dumps(postdata), headers=header)
r = json.loads(r.text)['result']
global iplist
iplist = []
for i in r:
try:
iplist.append(i['interfaces'][0]['ip'])
except:
continue

if __name__ == "__main__":
gethostip()
with open("iplist.txt") as file:
for ip in file:
ip = ip.rstrip()
if ip not in iplist:
print ("%s" % ip + ":is not in zabbix")
else:
print ("%s" % ip + ":is in zabbix")

标签:python,ip,json,auth,zabbix,核对,监控,iplist
From: https://blog.51cto.com/xikder/5769783

相关文章

  • Python报AttributeError: module 'string' has no attribute 'join'解决方法
     报:AttributeError:module'string'hasnoattribute'join' 属性错误:模块“string”没有属性“join” 解决方法:因为python版本升级,函数名称已有改变,只需要将strin......
  • Python的Bs4解析库的学习与使用
    BeautifulSoup简称BS4(其中4表示版本号)是一个Python第三方库,它可以从HTML或XML文档中快速地提取指定的数据。提供一些简单的、python式的函数用来处理导航、搜索......
  • python常识系列07-->python利用xlwt写入excel文件
    前言读书之法,在循序而渐进,熟读而精思。——朱熹抽空又来写一篇,毕竟知识在于分享!一、xlwt模块是什么python第三方工具包,用于往excel中写入数据;(ps:只能创建新表格,不能修改......
  • Day4:Python列表、元组的方法
    1、编码ascii:字母,数字,特殊字符:1个字节,8位Unicode:16位两个字节升级32位四个字节utf-8:最少一个字节8位表示。英文字母8位1个字节......
  • python manage.py startapp XXX报错【TypeError: unsupported operand type(s) for /:
    查看日志提示【 'DIRS':[BASE_DIR/'templates']】【 File"D:\study\test\djangoProject\djangoProject\settings.py",line57,in<module>】找到setting文件的li......
  • 【CAD开发】glTF和b3dm文件格式读取三(Python, JS)
    1、简介glTF格式使用scene对象来描述场景。对glTF数据的JSON文件进行解析时,对场景结构的遍历也是从scene对象开始。每个scene对象引用了一个nodes数组,nodes数组通过索引引......
  • 粒子群优化算法-Python版本和Matlab函数调用
    前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab下的粒子群函数。前文参看:​​粒子群优化算法(PSO)​​以Ras函数(Rastrigin's......
  • Python 让图像变卡通图
    要创造卡通效果,我们需要注意两件事:边缘和调色板,这就是照片和卡通的不同之处。为了调整这两个主要组成部分,我们将经历四个主要步骤:加载图像创建边缘减少调色板将边缘掩模与......
  • Python中的枚举类enum
    0.本文来历上一篇文章,我写了Pytest插件pytest-order指定用例顺序我当时就比较好奇它的顺序和英文的对应关系,肯定是写死的,找了下就发现在源码sorter.py中定义了一......
  • Python教程Day03-Python输出、输入、转换数据类型、运算符
    一、输出作用:程序输出内容给用户print('helloPython')age=18print(age)#需求:输出“今年我的年龄是18岁”1、格式化输出格式化输出即按照一定的格式输出内容1.1格......