我一直在为我的nagios机器制作一些自定义shell脚本。我能够让它们运行得很好,但由于某些原因,脚本中的某些命令似乎不起作用。
例如echo,cut,ps,grep之类的命令工作正常,但像touch,useradd这样的命令似乎不起作用,即使使用sudo也是如此。如果我从终端运行脚本,脚本中的所有命令都可以工作。
如何授予nagios权限以运行这些命令?
我在ubuntu 14.04.5 lts上运行nagios3
编辑:添加了几行未运行的代码
sudo useradd -m $USERNAME
(echo $PASSWORD; echo $PASSWORD) | sudo smbpasswd -s -a $USERNAME
答案 0 :(得分:1)
告诉nagios在.cfg文件中将脚本作为sudo运行...
假设其权限问题。
答案 1 :(得分:1)
标准方式是受监控服务器上Nagios用户的设置权限,例如/etc/sudoers
文件中的NRPE。
<强> 1。方法强>
尝试在你的sudoers文件中添加这样的内容。
Defaults:nrpe !requiretty
nrpe ALL= NOPASSWD: useradd -m
nrpe ALL= NOPASSWD: smbpasswd -s -a
PS:为了便于编辑sudoers文件,您可以使用visudo
命令; - )
<强> 2。方法强>
或者您可以尝试通过sudo
sudo usermod -aG sudo <username>
群组
-a
代表添加
G
适用于群组
答案 2 :(得分:0)
编辑 /etc/sudoers
,使用visudo ,可以自动检查文件中的错误。
Defaults:nrpe !requiretty
nrpe ALL=(root) NOPASSWD: /path/to/your/command/or/script
在这种情况下,验证sudo已为用户分配了上述权限 nrpe
sudo -U nrpe -l
您应该会在outpul中看到添加的命令
编辑/etc/nagios/nrpe.cfg
将命令添加到文件末尾
例如 命令[您的命令] = / usr / bin / sudo / path / to /您的/命令/或/脚本
重新启动nrpe
Centos:systemctl restart nrpe
(使用基于您的操作系统的可用命令)