我正在制作一个与 NAGIOS 交互的工具,其中应该添加一些配置文件,因此需要重新启动。
我需要知道的是如何使用 PHP 代码重新启动 NAGIOS,因为这个工具是用 PHP 编写的。当我尝试使用以下命令执行此操作时:
shell_exec("service nagios restart");
更改不会发生,但是当我通过控制台手动执行此操作时,我使用 PHP 脚本所做的所有更改都会应用...经过 2 分钟的研究,我发现我在以以下身份登录时要求 Linux 执行此命令阿帕奇用户所以我将命令改为:
shell_exec('echo "mypass" | sudo -S service nagios restart');
仍然有同样的问题...直到我重新启动,新的配置文件才会被读取手动
任何建议都将受到赞赏:)
答案1
最好将您的 Web 服务器添加到 sudoers,以使其无需输入密码即可重新启动 nagios 服务。这比在 PHP 文件中输入密码更安全。为此,请输入:
$ sudo visudo
然后,添加如下一行:
apache_user ALL=NOPASSWD: /path/to/script
这将允许仅具有提示输入密码的权限的人执行apache_user
。/path/to/script
sudo
答案2
我猜还是权限有问题,用 apache 用户登录su apacheusername
,然后执行你的命令
echo "nagiosxi" | sudo -S service nagios restart
验证这不会产生任何错误。您确定正在将 Nagios 作为服务运行吗?