我正在尝试为某些服务安排停机时间,并且无法通过命令行或Web GUI实现这一点。出于某种原因,我唯一能做的就是通过GUI提交主机注释/停机时间,而不是其他任何地方。我还应该提一下,计划停机时间的cronjob将显示在Nagios网络界面评论中,但仍然无法正常工作。我注意到的唯一区别是作为主机停机时间的GUI指示的作者是“nagiosadmin”,非工作停机时间是“nagios”我尝试使用nagiosadmin尝试chown'ing文件路径。
以下是相关的deets:
nagios.cfg
check_external_commands=1
nagios_user=nagios
nagios_group=nagios
command_file=/usr/local/nagios/var/rw/nagios.cmd
我已经多次更改了此目录的权限和所有者,似乎没有任何效果: ls -l / usr / local / nagios / var / rw
prwxrwxrwx. 1 nagios nagcmd 0 Jan 29 21:27 nagios.cmd
srw-rw----. 1 nagios nagcmd 0 Jan 29 14:09 nagios.qh
我将用户添加到他们并不真正需要的群组中无济于事: cat / etc / group:
nagcmd:x:505:nagios,nagiosadmin,apache
nagios:x:501:nagios,apache,nagiosadmin
脚本指向正确的文件路径,但无论如何它都无法在GUI中运行。
infra2 nagios: Error: External command failed -> SCHEDULE_HOST_DOWNTIME;deploy1;1422507601;1422536401;0;28800;neo-nagios;Scheduled Daily Downtime (low usage period) Jan 29 21:27:20 infra2 nagios: External command error: Command failed
我知道这不是问题的根源,因为命令行没有任何作用,但是:
ls -l /usr/local/nagios/etc/cgi.cfg -rw-rw-r--. 1 nagios nagios 12015 Jan 29 14:06 /usr/local/nagios/etc/cgi.cfg
ls -l /usr/local/nagios/sbin/cmd.cgi -rwxrwxr-x. 1 nagios nagios 288424 Jan 28 10:17 /usr/local/nagios/sbin/cmd.cgi
GUI错误我厌倦了看到: “抱歉,你无权提交指定的命令... yada”
我错过了什么?!?!请帮忙!并提前感谢
答案 0 :(得分:0)
我个人使用nagios cmd.cgi时使用post / get。您可以使用curl / wget / etc使用正确的参数调用该命令,以执行您想要的操作,就像使用GUI一样。
最简单的方法是查看通过GUI执行post / get命令时发送的内容,并通过wget / curl命令重现它。像魅力一样工作,我个人拥有自动化流程,同时从脚本和自动停机时间调用cmd.cgi,或者通过服务或主机禁用/启用服务。
答案 1 :(得分:0)
有些东西似乎不同步。在nagios.cfg中,您有:
nagios_user=nagios
nagios_group=nagios
但是nagios.cmd上的群组名称是 nagcmd ,而不是 nagios 。
此外,您展示了nagios和nagcmd用户的组分配,但实际运行命令的用户是什么?另外,将nagcmd(或nagios)作为一组添加到Web用户(www-data或apache,具体取决于操作系统)?
最后,还有一些位置需要写入权限。确保将正确的权限添加到这些目录(同样,正确的用户具有nagios或nagcmd组权限)应该有所帮助。
有关更多信息,请参阅此帖子: Nagios - Could not open command file /usr/local/nagios/var/rw/nagios.cmd’ for update