Zabbix Server Api批量添加Zabbix Agent

news/2024/12/4 17:17:45/

脚本或使用自动化工具来批量添加Zabbix Agent,从而减少手动操作和提高效率

使用API添加主机可以减少人为错误的发生。通过自动化和脚本,可以确保正确的配置被应用到每个主机上,避免了手动操作可能导致的配置错误。

使用前提条件

1、zabbix server端模版已经调试完毕

2、zabbix agent 端配置文件和自定义监控调试完毕

Go获取token

package mainimport ("bytes""encoding/json""fmt""io/ioutil""net/http"
)type AuthResponse struct {JsonRPC string `json:"jsonrpc"`Result  string `json:"result"`
}func main() {zabbixURL := "http://192.168.12.100/zabbix/api_jsonrpc.php"username := "your-username"password := "your-password"// 构建请求的JSON数据data := map[string]interface{}{"jsonrpc": "2.0","method":  "user.login","params": map[string]string{"user":     username,"password": password,},"id": 1,}// 将数据转换为JSON格式payload, err := json.Marshal(data)if err != nil {fmt.Println("JSON encoding error:", err)return}// 发送POST请求给Zabbix APIresp, err := http.Post(zabbixURL, "application/json", bytes.NewBuffer(payload))if err != nil {fmt.Println("API request error:", err)return}defer resp.Body.Close()// 读取响应的内容body, err := ioutil.ReadAll(resp.Body)if err != nil {fmt.Println("Response read error:", err)return}// 解析响应的JSON数据var authResp AuthResponseerr = json.Unmarshal(body, &authResp)if err != nil {fmt.Println("JSON decoding error:", err)return}// 输出令牌(token)fmt.Println("Token:", authResp.Result)
}

1、获取模版ID和组ID

[root@ops-public zabbix]# cat template-group.sh 
ZABBIX_URL="http://192.168.12.100/zabbix"
username := "your-username"
password := "your-password"
# 登录获取认证令牌
AUTH_TOKEN=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "user.login","params": {"user": "'"$USER"'","password": "'"$PASSWORD"'"},"id": 1
}' "$ZABBIX_URL/api_jsonrpc.php" | jq -r '.result')# 获取模板列表
TEMPLATE_RESULT=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "template.get","params": {"output": ["templateid", "name"]},"auth": "'"$AUTH_TOKEN"'","id": 1
}' "$ZABBIX_URL/api_jsonrpc.php")echo "Template List:"
echo "$TEMPLATE_RESULT" | jq -r '.result[] | "Template ID: \(.templateid), Name: \(.name)"'# 获取主机组列表
HOSTGROUP_RESULT=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "hostgroup.get","params": {"output": ["groupid", "name"]},"auth": "'"$AUTH_TOKEN"'","id": 1
}' "$ZABBIX_URL/api_jsonrpc.php")echo "Hostgroup List:"
echo "$HOSTGROUP_RESULT" | jq -r '.result[] | "Hostgroup ID: \(.groupid), Name: \(.name)"'

2、批量添加主机

添加到Virtual machines

挂载模版 ID为 10001和10274

[root@ops-public zabbix]# cat add_hosts.sh 
#!/bin/bash
ZABBIX_URL="http://192.168.12.100/zabbix/api_jsonrpc.php"
username := "your-username"
password := "your-password"TOKEN=$(curl -s -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0","method": "user.login","params": {"user": "'"$USER"'","password": "'"$PASSWORD"'"},"id": 1
}' "$ZABBIX_URL" | jq -r '.result')NET="192.168.12."for HOST in $(seq 200 210); doHOST_IP="$NET$HOST"RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0","method": "host.create","params": {"host": "'"$HOST_IP"'","name": "'"$HOST_IP"'","interfaces": [{"type": 1,"main": 1,"useip": 1,"ip": "'"$HOST_IP"'","dns": "","port": 10050}],"groups": [{"groupid": "6"}],"templates": [{"templateid": "10274"},{"templateid": "10001"}]},"id": 1,"auth": "'"$TOKEN"'"}' "$ZABBIX_URL")HOST_ID=$(echo "$RESPONSE" | jq -r '.result.hostids[0]')HOST_NAME=$(echo "$RESPONSE" | jq -r '.result.hosts[0].host')echo "Added host $HOST_NAME with ID $HOST_ID"
done

批量添加主机并挂载模版

除了使用api方式,也可以使用自动注册主机来完成主机注册。


http://www.ppmy.cn/news/100047.html

相关文章

SMCSQL:一种用于安全查询的联合数据库

摘要 在数据量不断膨胀的今天,但是因为隐私问题,在科学研究等方面的数据共享工作仍然进展缓慢。 本文提出了一种名为 PDN(Private Data Network)的用于多个互不信任的参与方之间的联邦数据库形式。在 PDN 中,用户将查询请求发送给一个名为诚实代理(Honest Broker)的中…

IIC协议

1.认识IIC 1、IIC协议概述: IIC(Inter-Integrated Circuit,集成电路总线)是一种串行通信协议,也被称为I2C协议。它是由荷兰的PHILIPS公司(现在philips公司将其半导体部门拆分出来并更名为NXP半导体公司&a…

2023年江苏省中职网络安全Web渗透测试解析(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.访问地址http://靶机IP/web1,分析页面内容,获取flag值,Flag格式为flag{xxx}; 2.访问地址http://靶机IP/web2,访问登录页面。用户user01的密码为1-1000以内的数,获取用户user01的密码,将密码作为Flag进行提交,Flag格式为…

golang jwt

目录 一、jwt基础 二、jwt签名与验签的算法 三、定义MyCustomClaims 与jwt各个字段的含义 四、golang的HS256签名与验签 五、golang的RS256签名与验签 六、登录与中间件 一、jwt基础 jwt由三部分构成,headerpayloadsignature,由两个"."进行分割。 …

如何在华为OD机试中获得满分?Java实现【水仙花数】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 所谓水仙花数,是指一个…

前端切图仔跑路真经

一、闭包 谈到闭包,我们首先要讨论的就是作用域。 1、作用域: 是指程序源代码中代码定义的范围。规定了如何设置变量,也就是确定了当前执行代码对变量的访问权限。 JavaScript采用词法作用域,也就是静态作用域,就是在…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(1)----获取ID

概述 本文将介绍如何驱动和利用LSM6DS3TR-C传感器,实现精确的运动感应功能。LSM6DS3TR-C是一款先进的6轴惯性测量单元(IMU),集成了三轴加速度计和三轴陀螺仪,可用于测量和检测设备的加速度、姿态和运动。 本文将提供L…

计算机的大小端存储模式(计算机小白必看!)

目录 1.什么是大端小端 2.为什么会有大小端模式之分呢? 3.如何判断当前机器为大端字节序还是小端字节序 本文将介绍计算机存储数据时的大小端问题 1.什么是大端小端 大端(存储)模式,是指数据的低位保存在内存的高地址中&…