ZABBIX通过API添加新主机

获取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
ZABBIX通过API添加新主机
https://www.linuxstudynotes.com/2023/05/16/zabbix/zabbix%e9%80%9a%e8%bf%87api%e6%b7%bb%e5%8a%a0%e6%96%b0%e4%b8%bb%e6%9c%ba/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇