Zabbix ssh需要强制伪tty分配

我目前正在尝试在zabbix中configuration一个项目,通过SSH执行远程服务器的检查。 当我在zabbix框上运行以下命令时,它工作

sudo -u zabbix ssh -t root@[remote_ip] 'sudo ls' 

但是,当我运行这个

 sudo -u zabbix ssh root@[remote_ip] 'sudo ls' 

我得到sudo: sorry, you must have a tty to run sudo 。 我明白这是因为我没有强迫tty。 我的问题是,我怎么能得到的zabbix ssh.run项目'钥匙'强制tty? 最好不要对远程主机进行任何更新。

Zabbix不支持将参数发送到ssh – 因为Zabbix服务器实际上并不实际运行“ssh”二进制文件,而是链接到libssh2库,它在Zabbix服务器上执行zabbix_server轮询器进程的ssh调用。

我认为你可以编辑src / zabbix_server / poller / checks_ssh.c,添加“强制伪tty分配”configuration参数,或者只是在代码中强制它。 我会build议你反对后者,因为你最终会为了自己的目的而维护Zabbix fork。 如果你决定做前者,你可以将补丁应用到Zabbix社区,这可能会被Zabbix的开发者接受和维护。

如果你感觉不舒服或者没有足够的时间去做,唯一的解决办法就是在所有的“remote_ip”盒子上configurationsudo:

 cat >> /etc/sudoers.d/zabbix_notty <<EOF # Allow user zabbix to run sudo without tty Defaults:zabbix !requiretty EOF 

我知道你说过你不喜欢这个,但是…