故障现象

运行 /usr/lib/zabbix/alertscripts/dingtalk-robot.py 时报错:

ModuleNotFoundError: No module named 'requests'

故障原因

Python 环境中缺少 requests 模块。该模块是脚本中用于发送 HTTP 请求的必要依赖。

解决方案

方法一:使用系统包管理器安装(推荐)

CentOS/RHEL 系统:

sudo yum install python3-requests -y

Ubuntu/Debian 系统:

sudo apt install python3-requests -y

方法二:使用 pip 安装

# 使用 pip3 安装(需要 root 权限)
sudo pip3 install requests

# 或者安装到用户目录(无需 root 权限)
pip3 install --user requests

验证安装

python3 -c "import requests; print('requests 版本:', requests.__version__)"

重新运行脚本

python3 /usr/lib/zabbix/alertscripts/dingtalk-robot.py

注意事项

  1. Python 版本:脚本使用 #!/usr/bin/env python,可能调用 Python 2。建议明确使用 python3 运行。
  2. 执行权限:确保脚本有执行权限:

    chmod +x /usr/lib/zabbix/alertscripts/dingtalk-robot.py
  3. 目录权限:检查 /usr/lib/zabbix/alertscripts/ 目录权限是否正确。
  4. Zabbix 用户:如果 Zabbix 服务以特定用户运行,需要确保该用户也有 requests 模块。

常见问题

Q: 安装后仍然报错怎么办?

A: 检查 Python 路径是否正确:

which python3
python3 -c "import sys; print(sys.path)"

Q: 如何检查哪些 Python 环境已安装 requests?

A:

python3 -m pip list | grep requests

Q: 在 Zabbix 告警脚本中如何指定 Python 版本?

A: 修改脚本第一行为:

#!/usr/bin/python3