我正在尝试使用此脚本来监控软件raid: https://github.com/linuxsquad/zabbix_mdraid
当我在zabbix_agentd.conf中进行以下设置(使用SUDO)时:
UserParameter=mdraid[*], sudo /usr/local/bin/zabbix_mdraid.sh -m'$1' -$2'$3'
UserParameter=mdraid.discovery, sudo /usr/local/bin/zabbix_mdraid.sh -D
从Zabbix代理执行以下操作:
zabbix_get -s HOSTNAME -k mdraid[/dev/md0,d,1]
我在zabbix_agentd.log中收到以下错误("抱歉,你必须有一个tty来运行sudo"):
25547:20141229:090259.961 Requested [mdraid[/dev/md0,d,1]]
25547:20141229:090259.961 In zbx_popen() command:' sudo /usr/local/bin/zabbix_mdraid.sh -m'/dev/md0' -d'1''
25547:20141229:090259.962 End of zbx_popen():7
25552:20141229:090259.962 zbx_popen(): executing script
sudo 25546:20141229:090259.970 listener #1 [processing request]
25546:20141229:090259.970 Requested [system.cpu.util[,steal]]
25546:20141229:090259.970 Sending back [0.000000]
25546:20141229:090259.970 listener #1 [waiting for connection]
: sorry, you must have a tty to run sudo
是的,我已经调整了/ etc / sudoers文件:
/etc/sudoers:
zabbix ALL=(ALL) NOPASSWD: ALL
Defaults:zabbix !requiretty
还尝试在/ etc / sudoers
中注释掉所有包含requiretty的行当我切换到zabbix用户并手动运行脚本时:
-bash-4.1$ sudo /usr/local/bin/zabbix_mdraid.sh -m'/dev/md0' -eState
clean,degraded-bash-4.1$
它运作得很好。所以脚本很好,而/ etc / sudoers对zabbix用户不需要tty。还有什么可能是错的?任何想法如何使这项工作?
这是RHEL 6.5(代理,代理和服务器)
答案 0 :(得分:1)
在XenServer主机(基于CentOS)上监控MegaRAID硬件时遇到了同样的问题。 最后我只需要注释掉这一行:
Defaults requiretty
来自/etc/sudoers
的并且有效。根据我的阅读,它可以被安全删除,并将在未来由RedHat删除。我并不需要在Defaults
行添加任何内容(就像您为zabbix
所做的那样)。
当然最后一个测试适合你,因为当你手动运行命令时,你会在tty中运行;)
答案 1 :(得分:0)
尝试禁用SELinux:
sudo setenforce 0
在RHEL和Centos中,默认情况下已启用