我正在制作一个与NAGIOS交互的工具,在这里应该添加一些configuration文件,因此需要重新启动。
我需要知道的是如何使用PHP代码重新启动NAGIOS,因为这个工具是用PHP编写的。当我尝试使用下面的代码:
shell_exec("service nagios restart");
更改不会发生,但是当我通过控制台手动执行此操作时,我使用PHP脚本所做的所有更改都被应用… 2分钟研究后,我发现我要求linux执行此命令,而我以apache用户身份login所以我改变了命令:
shell_exec('echo "mypass" | sudo -S service nagios restart');
仍然有同样的问题…新的configuration文件不会被读取,直到我手动重新启动
任何build议将不胜感激:)
最好将你的web服务器添加到sudoers中,以使其不用提示input密码即可重新启动nagios服务。 这比在PHP文件中input密码更安全。 为此,键入:
$ sudo visudo
然后,像这样添加一行:
apache_user ALL=NOPASSWD: /path/to/script
这将使apache_user能够以sudo权限执行/path/to/script并提示input密码。
我的猜测是,权限仍然有问题,用su apacheusername作为apache用户su apacheusername ,然后执行你的命令
echo "nagiosxi" | sudo -S service nagios restart
validation这个不会给出任何错误。 你确定你是在运行Nagios吗?