Zabbix API批量新增用户
给zabbix配置完LDAP验证,但是需要提前在zabbix中建好用户,这个就会比较麻烦一点,AD域中的用户好几千人,而涉及到IT的也有2 300人,加上配置邮箱、手机号等,很明显工作量巨大。
由于对python和LDAP都不太熟悉,研究了几天没想出如何从直接从ldap将用户信息同步到zabbix,但刚好在另外一套系统中发现了有将ad域账号落地到数据库的情况,于是退而求其次,从这个数据库取得数据,再参考zabbix api的官方文档,完成了想要的效果。
这里采用python3的版本,通过pyzabbix库进行调用。
参考pyzabbix文档的语法
1 | from pyzabbix import ZabbixAPI |
获取数据库中ad账号信息
这里存放的临时表,很简单通过pymysql获取
1 | QurySql ="""select * from tmp_user""" |
总共取出4个字段,登录账号、别名、手机号、邮箱地址
获取已有账号信息
第一步就是要登陆到zabbix,获取系统里所有的user信息。
请求对象
1 | { |
返回值
1 | { |
因为alias这里是唯一索引,所以调用user.get方法的时候通过alias进行判断,如果已存在则更新信息,如果不存在则新增用户。
1 | user = zapi.user.get(filter={"alias": row[0]},output='extend') |
这里可以根据传入的alias值获取到账户的所有属性,还有个比较重要的返回值叫userid,这个是要作为后面更新的时候的入参。
更新用户
根据前面得到的userid,这里只在属性里配置手机号和邮件地址,这样调用的时候就只会更新配置了的属性,其他保持不变
1 | user_defaults = {'userid': user.userid, "user_medias": [ |
新增用户
新增用户的内容就比较多一点,会设置短信和邮件的告警级别,和账号的一些其他属性默认密码等
1 | user_defaults = {'alias': row[0], 'name': row[1], 'autologin': 1, 'autologout': 0, 'lang': 'zh_CN', 'type': 1, |
完整脚本
1 | #!/usr/bin/env python3 |
执行效果
1 | [root@zabbix-pri ~]# ./test.py |
Reference
Zabbix API批量新增用户
https://www.xbdba.com/2019/12/19/zabbix-api-create-user/