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

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

身为一个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.

相关文章