身为一个API调用工程师 / 脚本工程师,本次调用zabbix api提取zabbix内所有IP。基本思路是先完成认证,再执行调用,使用Python完成。
zabbix_base.py用于完成基本的认证。
import json
from urllib.request import Request,urlopen
#本脚本作为基础,提供zabbix认证接口
#zabbix url地址
zabbix_url = "http://XXX/zabbix/api_jsonrpc.php"
zabbix_header = {"Content-Type":"application/json"}
def zabbix_api_common(data):
data = json.dumps(data).encode('utf-8')
req = Request(zabbix_url, headers=zabbix_header, data=data)
# print(req) #<urllib.request.Request object at 0x000001C281BF2408>
result = urlopen(req).read()
return json.loads(result)
def get_token():
#填写zabbix登陆页面的用户名密码
zabbix_user = "xxx"
zabbix_pass = "xxx"
data = {
"jsonrpc":"2.0",
"method":"user.login",
"params":{
"user":zabbix_user,
"password":zabbix_pass
},
"id":0
}
result = zabbix_api_common(data)
return (result["result"])
if __name__ == "__main__":
result = get_token()
zabbix_ip.py需与zabbix_base.py脚本放在统一目录下,用于提取zabbix内所有设备IP,然后将结果写入文件。
#本脚本需与zabbix_base.py脚本放在统一目录下
#本脚本提取zabbix内所有设备IP,然后写入文件
import zabbix_base
token = zabbix_base.get_token()
data = {
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": [
"host",
],
"selectInterfaces": [
"ip",
]
},
"auth": token,
"id": 0
}
result = zabbix_base.zabbix_api_common(data)
print(len(result["result"]))
with open('zabbix_ip.txt','a+') as ip_out:
for ip_number in range(len(result["result"])):
#将IP和主机名写入文件
ip_out.write(result["result"][ip_number]['interfaces'][0]['ip'] + ' ' + result["result"][ip_number]['host'] + '\n')
ip_out.flush()
ip_out.close()
执行脚本:
# python3 zabbix_ip.py
5
查询执行结果,测试环境只有5台主机:
# cat zabbix_ip.txt
127.0.0.1 Zabbix server
192.168.1.2 host_test2
192.168.1.3 host_test3
192.168.1.4 host_test4
192.168.1.5 host_test5
[1] summer_zhou. Python调用Zabbix Api入门实战[EB/OL]. [2022年1月12日]. https://www.jianshu.com/p/c76f357b2973.
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/zsx0728/article/details/122458014
内容来源于网络,如有侵权,请联系作者删除!