如何调用zabbix api提取所有IP?

x33g5p2x  于2022-01-13 转载在 其他  
字(1.9k)|赞(0)|评价(0)|浏览(358)

身为一个API调用工程师 / 脚本工程师,本次调用zabbix api提取zabbix内所有IP。基本思路是先完成认证,再执行调用,使用Python完成。
    zabbix_base.py用于完成基本的认证。

  1. import json
  2. from urllib.request import Request,urlopen
  3. #本脚本作为基础,提供zabbix认证接口
  4. #zabbix url地址
  5. zabbix_url = "http://XXX/zabbix/api_jsonrpc.php"
  6. zabbix_header = {"Content-Type":"application/json"}
  7. def zabbix_api_common(data):
  8. data = json.dumps(data).encode('utf-8')
  9. req = Request(zabbix_url, headers=zabbix_header, data=data)
  10. # print(req) #<urllib.request.Request object at 0x000001C281BF2408>
  11. result = urlopen(req).read()
  12. return json.loads(result)
  13. def get_token():
  14. #填写zabbix登陆页面的用户名密码
  15. zabbix_user = "xxx"
  16. zabbix_pass = "xxx"
  17. data = {
  18. "jsonrpc":"2.0",
  19. "method":"user.login",
  20. "params":{
  21. "user":zabbix_user,
  22. "password":zabbix_pass
  23. },
  24. "id":0
  25. }
  26. result = zabbix_api_common(data)
  27. return (result["result"])
  28. if __name__ == "__main__":
  29. result = get_token()

zabbix_ip.py需与zabbix_base.py脚本放在统一目录下,用于提取zabbix内所有设备IP,然后将结果写入文件。

  1. #本脚本需与zabbix_base.py脚本放在统一目录下
  2. #本脚本提取zabbix内所有设备IP,然后写入文件
  3. import zabbix_base
  4. token = zabbix_base.get_token()
  5. data = {
  6. "jsonrpc": "2.0",
  7. "method": "host.get",
  8. "params": {
  9. "output": [
  10. "host",
  11. ],
  12. "selectInterfaces": [
  13. "ip",
  14. ]
  15. },
  16. "auth": token,
  17. "id": 0
  18. }
  19. result = zabbix_base.zabbix_api_common(data)
  20. print(len(result["result"]))
  21. with open('zabbix_ip.txt','a+') as ip_out:
  22. for ip_number in range(len(result["result"])):
  23. #将IP和主机名写入文件
  24. ip_out.write(result["result"][ip_number]['interfaces'][0]['ip'] + ' ' + result["result"][ip_number]['host'] + '\n')
  25. ip_out.flush()
  26. ip_out.close()

执行脚本:

  1. # python3 zabbix_ip.py
  2. 5

查询执行结果,测试环境只有5台主机:

  1. # cat zabbix_ip.txt
  2. 127.0.0.1 Zabbix server
  3. 192.168.1.2 host_test2
  4. 192.168.1.3 host_test3
  5. 192.168.1.4 host_test4
  6. 192.168.1.5 host_test5
参考资料

[1] summer_zhou. Python调用Zabbix Api入门实战[EB/OL]. [2022年1月12日]. https://www.jianshu.com/p/c76f357b2973.

相关文章