![Nagios:使用相同的commands.cfg文件为不同的主机配置不同的用户](https://linux22.com/image/619418/Nagios%EF%BC%9A%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84commands.cfg%E6%96%87%E4%BB%B6%E4%B8%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E4%B8%BB%E6%9C%BA%E9%85%8D%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%E7%94%A8%E6%88%B7.png)
我在 unix 环境中使用 check_by_ssh 来执行 Nagios 插件。一些主机有不同的 unix 帐户,Nagios 需要通过 ssh 连接到该帐户才能运行插件。我使用 -l 传递帐户名,如下所示:
command_line $USER1$/check_by_ssh -p 22 \
-H $HOSTADDRESS$ -l <user> -i /home/nagios/.ssh/$HOSTNAME$ -C '<plug-in path>'
对于具有不同 unix 帐户的机器,有没有办法不必将所有命令定义加倍,例如用 -l user1 替换 -l nagios?
我希望有一种方法可以在主机定义中传递用户名,以表明这组主机应该使用用户 1 登录,而另一组主机应该使用用户 2 登录。
任何帮助都将受到赞赏。
谢谢
答案1
注意:我还没有测试过该代码。
也就是说,我可能会在commands.cfg中定义一个备用检查,内容如下:
# Check by SSH for hosts with different account
command_line $USER1$/check_by_ssh_alt -p 22 \
-H $HOSTADDRESS$ -l $ARG1$ -i /home/nagios/.ssh/$HOSTNAME$ -C '<plug-in path>'
然后使用类似下面的命令来调用它:
define service{
use generic-service
hostgroup_name hostgroup_1
service_description Some Check by SSH
contacts hostgroup_1_admins
notification_options w,c,r
notification_period 24x7
notification_interval 0
check_command check_ssh_alt!user1
}
祝你好运!