mdraid监控中的zabbix用户sudo问题

时间:2014-12-30 12:13:09

标签: sudo zabbix

我正在尝试使用此脚本来监控软件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(代理,代理和服务器)

2 个答案:

答案 0 :(得分:1)

在XenServer主机(基于CentOS)上监控MegaRAID硬件时遇到了同样的问题。 最后我只需要注释掉这一行:

Defaults    requiretty
来自/etc/sudoers

并且有效。根据我的阅读,它可以被安全删除,并将在未来由RedHat删除。我并不需要在Defaults行添加任何内容(就像您为zabbix所做的那样)。

当然最后一个测试适合你,因为当你手动运行命令时,你会在tty中运行;)

答案 1 :(得分:0)

尝试禁用SELinux:

sudo setenforce 0

在RHEL和Centos中,默认情况下已启用