You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyzabbix模块调用Zabbix API,如何免用户名密码实现登录?

使用API令牌替代用户名密码登录Zabbix API

当然有办法解决这个问题!从Zabbix 5.4版本开始,官方就引入了**API令牌(API Token)**功能,专门用来替代传统的用户名密码登录,完美适配你不想在Python脚本中硬编码账号密码的需求。

1. 先确认你的Zabbix版本

API令牌功能只在Zabbix 5.4及以上版本(包括后续的6.x、7.x系列)可用。如果你的服务器是更早的版本,要么考虑升级Zabbix,要么退而求其次用环境变量存储账号密码(但安全性远不如令牌)。

2. 创建专属API令牌

登录Zabbix Web后台后,按以下步骤生成令牌:

  • 点击右上角的用户头像,选择「用户设置」
  • 切换到「API令牌」标签页
  • 点击「创建API令牌」,填写令牌名称(比如“Python脚本专用令牌”),设置有效期(可以选永久),然后点击添加
  • 复制生成的令牌字符串!这个字符串只会显示一次,离开页面后就看不到了,一定要妥善保存。

3. 在pyzabbix中用令牌登录

pyzabbix已经支持直接通过API令牌登录,不需要再调用user.login方法。直接看示例代码:

from pyzabbix import ZabbixAPI
import os

# 初始化ZabbixAPI连接
zapi = ZabbixAPI("http://your-zabbix-server-ip/zabbix")

# 用API令牌登录(推荐从环境变量读取,避免硬编码)
zapi.login(api_token=os.getenv("ZABBIX_API_TOKEN"))

# 测试API调用,比如获取所有主机信息
host_list = zapi.host.get(output=["hostid", "name"])
for host in host_list:
    print(f"主机ID: {host['hostid']}, 主机名: {host['name']}")

4. 一些重要的注意事项

  • 令牌和你的Zabbix账号绑定,拥有和该账号完全相同的权限,所以一定要给对应的用户设置最小必要权限,避免权限过大带来风险。
  • 绝对不要把令牌直接写在脚本里!像上面示例那样用环境变量存储是更安全的方式:
    • Linux/macOS终端:export ZABBIX_API_TOKEN="你的令牌字符串"
    • Windows命令行:set ZABBIX_API_TOKEN=你的令牌字符串
  • 如果运行脚本时报错说没有api_token参数,说明你的pyzabbix版本太旧了,升级一下就行:pip install --upgrade pyzabbix

内容的提问来源于stack exchange,提问作者Ashok Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:03:33