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

    身为一个API调用工程师 / 脚本工程师,本次调用zabbix api提取zabbix内所有IP。基本思路是先完成认证,再执行调用,使用Python语言,一共2个脚本文件。
    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()

    执行脚本,下方结果中的5表示测试环境中有5台主机:

# python3 zabbix_ip.py 
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.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值