获取token
#!/bin/bash
ZABBIX_SERVER=192.168.1.10:81 #zabbix的web访问地址
curl -s -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "Admin", #zabbix用户名
"password": "zabbix" #zabbix密码
},
"id": 1
}' http://$ZABBIX_SERVER/api_jsonrpc.php
zabbix是一个LNMP或LAMP架构,http://$ZABBIX_SERVER/api_jsonrpc.php 的/api_jsonrpc.php 可以通过nginx或者apache的配置文件和其家目录确定,或者通过find查找。
find / -name api_jsonrpc.php
获取的token需要注意的是使用的时候需要通过awk或其他方法把token提取出来。
通过获取的token添加主机
参考文档:
https://www.zabbix.com/documentation/5.0/zh/manual/api/reference/hostinterface/object#host-interface
https://www.zabbix.com/documentation/5.0/zh/manual/api/reference/host/create
chatgpt
不带proxy
查询组ID方法,通过web页面访问zabbix,点击需要加的组,可以看到url中最后会出现ID信息,例:
http://192.168.1.10:81/hostgroups.php?form=update&groupid=2
上边URL表示这个组的ID为2.
#!/bin/bash
ZABBIX_SERVER=192.168.1.10:81
TOKEN=$(./gettoken.sh| awk -F'"' '{print $8}') #通过awk获取token
HOST=192.168.1.13 #需要添加的主机IP
curl -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'web-api-$HOST'", #主机名称
"name": "'web-api-$HOST'", #可见名称
"interfaces": [
{
"type": "1", #类型,可能的值:1 - agent;2 - SNMP;3 - IPMI;4 - JMX
"main": 1,
"useip": 1,
"ip": "'$HOST'", #要添加的主机名
"dns": "",
"port": "10050" #接口端口
},
{
"type": "4", #类型,可能的值:1 - agent;2 - SNMP;3 - IPMI;4 - JMX
"main": 1,
"useip": 1,
"ip": "'$HOST'", #要添加的主机名
"dns": "",
"port": "12345" #接口端口
}
],
"groups": [
{
"groupid": "2" #组ID
}
],
"templates": [
{
"templateid": "10442" #模板ID
},
{
"templateid": "10448" #模板ID
}
]
},
"id": 1,
"auth": "'$TOKEN'"
}' http://${ZABBIX_SERVER}/api_jsonrpc.php | python3 -m json.tool
使用proxy
#!/bin/bash
ZABBIX_SERVER=192.168.1.10:81
TOKEN=$(./gettoken.sh| awk -F'"' '{print $8}')
HOST=192.168.1.14
PROXYID=10445
curl -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'web-api-$HOST'",
"name": "'web-api-$HOST'",
"proxy_hostid": "'$PROXYID'", #proxyID
"interfaces": [
{
"type": "1",
"main": 1,
"useip": 1,
"ip": "'$HOST'",
"dns": "",
"port": "10050"
},
{
"type": "4",
"main": 1,
"useip": 1,
"ip": "'$HOST'",
"dns": "",
"port": "12345"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10442"
},
{
"templateid": "10448"
}
]
},
"id": 1,
"auth": "'$TOKEN'"
}' http://${ZABBIX_SERVER}/api_jsonrpc.php | python3 -m json.tool
这样就可以通过for循环等使用api批量创建主机了。
查询主机信息
#!/bin/bash
ZABBIX_SERVER=192.168.1.10:81
TOKEN=$(./gettoken.sh | awk -F'"' '{print $8}')
HOST=192.168.1.11
curl -X POST -H 'Content-Type: application/json' -d '
{
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["hostid", "host", "status"],
"selectInterfaces": ["ip"]
},
"auth": "'$TOKEN'",
"id": 1
}' http://$ZABBIX_SERVER/api_jsonrpc.php