我想在出现电源故障时关闭我的 NAS 和 ESXI。这两个系统都在伊顿 UPS 上运行。我只运行 Linux 系统,因此我不能使用 Eaton Manager,仅限 Windows。
由于我将 Nagios 用于其他任务,因此我想创建一个插件,使用 ssh-public-key 可以连接到上述系统并关闭它们。
Nagios 用户的公钥已经安装在 ESXI 的 root 用户上(NAS 稍后会出现)。 当我将用户更改为 Nagios(在 Nagios 服务器上)并手动运行脚本时,它会连接到 ESXI 并且(目前)它会在 /tmp 上写入一个“testfile”。它有效。
当脚本由 Nagios 自己运行时,它不会. 此脚本作为处理程序运行:
define host {
name home-monitoring
use generic-host
check_period 24x7
check_interval 5
contact_groups admins
event_handler poweroff_host
register 0
}
cat /usr/lib64/nagios/plugins/poweroff_host.sh
#!/bin/bash
/usr/bin/ssh root@esxi -i /var/spool/nagios/.ssh/id_rsa "touch /tmp/testfile"
cat /etc/nagios/objects/commands.cfg
define command{
command_name poweroff_host
command_line sudo /usr/lib64/nagios/plugins/poweroff_host.sh
}
visudo
(at the bottom of the file)
nagios ALL = (root) NOPASSWD:/usr/lib64/nagios/plugins/poweroff_host.sh
我还将 nagios 用户添加到了 wheel 组(使用 usermod)
# grep wheel /etc/group
wheel:x:10:nagios
最后,在过去的 4 天里,我一直在这里打我的头,并且在日志中不断出现错误。最后一个错误是:
journalctl -xef
stderr line 01: /usr/lib64/nagios/plugins/poweroff_host.sh: line 2: /usr/bin/ssh: Permission denied
在 visudo 之前,错误是no ssh in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
,至少现在我设法改变了错误的类型。
我可以请一些帮助并解决问题吗?
更新 1:
[root@nagios ~]# audit2allow -i /var/log/audit/audit.log
#============= nagios_t ==============
allow nagios_t ldconfig_exec_t:file { execute getattr };
allow nagios_t nagios_spool_t:dir create;
allow nagios_t pam_var_run_t:dir write;
allow nagios_t ssh_exec_t:file { execute getattr };
allow nagios_t tmpfs_t:dir write;
快进到semodule
命令,但 stderr line 01: /usr/lib64/nagios/plugins/poweroff_host.sh: line 2: /usr/bin/ssh: Permission denied
仍然存在:/
我将尝试完全禁用 Selinux:/