Я просто написал простой сценарий bash, который проверяет, работает ли файловая система при записи и удалении файла, но когда я помещаю его в Nagios, он никогда не работает должным образом.
root@debian:~# cat /usr/lib/nagios/plugins/check_filesys.sh
#!/bin/bash
# Script que checa se file system consegue escrever/ler arquivos
if touch teste.txt && rm teste.txt; then
echo OK - Teste OK!
exit 0
else
echo CRITICAL - Teste de escrita/leitura falhou!
exit 2
fi
root@debian:~# ls -l /usr/lib/nagios/plugins/check_filesys.sh
-rwxrwxrwx 1 root root 217 Feb 5 10:40 /usr/lib/nagios/plugins/check_filesys.sh
Я также нашел сценарий отладки, чтобы узнать, в чем проблема, и вот результат:
2016-1-5 13:31:16 ------ debugging
cmd=[/usr/lib/nagios/plugins/check_filesys.sh]
output=[touch: cannot touch `teste.txt': Permission denied
CRITICAL - Teste de escrita/leitura falhou!
Я попытался вставить пользователя nagios в файл / etc / sudoers как:
nagios ALL:NOPASSWD: /bin/bash -c /usr/lib/nagios/plugins/check_filesys.sh *
но проблема не устранена. OBS: Я проверяю localhost.
Вам нужно использовать полный путь для touch / rm, потому что ваш скрипт пытается работать в /
, и у Nagios нет разрешения на запись в /
.
(Возможно, вы сможете обойтись без использования ~/test.txt
если для $ HOME установлено что-то нормальное.)
Вы можете убедиться в этом сами:
# pgrep nagios
556
# ls -ls /proc/556/cwd
0 lrwxrwxrwx 1 root root 0 Feb 5 11:10 /proc/556/cwd -> /
Это указывает на то, что процесс Nagios работает с cwd
установлен в /
Ваш плагин nagios будет работать как ваш "nrpe_user", который вы определили в вашем /etc/nagios/nrpe.cfg. Вероятно, это «пользователь nagios или пользователь nrpe».
Если вы обновите свой скрипт, чтобы коснуться '/tmp/teste.txt' (другими словами, коснуться файла в месте с открытыми разрешениями), он должен работать.
Положив nagios
в sudoers
файл не поможет если вы на самом деле не вызываете sudo. Пытаться
nagios ALL=ALL NOPASSWD: /usr/lib/nagios/plugins/check_filesys.sh
в sudoers
, а нагиос вызывают
sudo /usr/lib/nagios/plugins/check_filesys.sh