我在运行Debian 8和Zabbix 3.2。
我已经做了一个自定义警报脚本,当我在终端中运行时,这个脚本运行得很好:
/bin/sh /usr/lib/zabbix/alertscripts/send_sms.sh 4483222740 Hello这是通过Twilio发送一条短信,工作良好。
在我的zabbix_server.conf中有:
AlertScriptsPath=/usr/lib/zabbix/alertscripts我在https://www.zabbix.com/documentation/3.2/manual/config/notifications/media/script之后创建了一个自定义媒体类型
但是这个脚本没有被调用。我有一个一般的媒体类型的电子邮件,这是正确的触发。
我对脚本的权限是:
ls -alh
total 12K
drwxr-xr-x 2 root root 4.0K Mar 9 09:04 .
drwxr-xr-x 4 root root 4.0K Feb 3 13:36 ..
-rwxr--r-- 1 root root 165 Mar 9 09:12 send_sms.sh我尝试在/var/log/目录中对"send_sms“进行grep,以查看是否发生了任何错误。没什么。
我的剧本以
exit 0如何调试?
发布于 2017-03-09 09:47:43
( a)您引用的权限-rwxr--r-- 1 root root 165 Mar 9 09:12 send_sms.sh只允许对root用户(脚本所有者)执行脚本。Zabbix守护进程通常以zabbix用户的身份运行,因此用户没有运行脚本的权限。由于该脚本已经具有可读性,将权限更改为755应该是可以接受的,并将允许Zabbix运行该脚本。
b)如果您的脚本依赖于任何环境变量,请确保设置脚本本身中的变量- Zabbix不提供配置文件或任何您可能希望设置这些变量的内容。
发布于 2017-03-09 10:40:07
您可以创建一个sudoers文件,允许zabbix用户运行脚本,而不是打开权限。Sudoers的语法非常精细,如果你把它搞砸了,它会完全破坏sudo,直到删除不正确的文件或行为止,所以要小心。
zabbix ALL=NOPASSWD: /usr/lib/zabbix/alertscripts/send_sms.sh *需要在zabbix和ALL之间有一个制表符字符,而不是一个空格,所以确保您的编辑器不会替换它。这个网站似乎是这样做的,所以不要只是直接复制和粘贴。
例如,在/etc/sudoers.d/zabbix中删除该行。这样做的根,这样你就不会被锁在外面,如果你不小心打破了自己的sudo。之后,您可以使用visudo -cf /etc/sudoers.d/zabbix测试语法。
编辑:再一次,我的用例是与使用apt-get更新相关的检查,它需要根。Twilio可能仍然有效,这只是读取/执行您的文件的问题。
发布于 2017-06-02 10:15:33
我解决了这个问题,不是关于许可,写在这里可以帮助别人。因为运行zabbix的脚本不在Alertscript中,所以您只需要添加一个命令: cd $Alertscriptpath (基于您的环境),所以它只是工作
https://serverfault.com/questions/837214
复制相似问题