Por que esse plugin Bash NRPE não retorna uma variável para o Nagios?

2

Esta é uma pergunta muito específica que tenho aqui, talvez alguém tenha uma resposta simples para isso.

Esse script que tenho aqui funciona localmente:

#! /bin/bash
volts='sudo vcgencmd measure_volts core|sed 's/volt=\([0-9\.]*\)V//''
echo -n "BCM2835 SoC Voltage is ${volts}V "
echo "| volts=$volts;1.5;1.5;0;1.5"

No entanto, se o Nagios tentar obter as informações, ele só recebe "BCM2835 SoC Voltage is V" como se a variável não estivesse definida.

Existem também outros plugins que extraem as informações dos arquivos e funcionam. Então eu gerencio para escrever as informações em um arquivo temporário e escrevê-las de volta na variável.

#! /bin/bash
sudo vcgencmd measure_volts core|sed 's/volt=\([0-9\.]*\)V//'>/tmp/volts
volts=$(</tmp/volts)
echo -n "BCM2835 SoC Voltage is ${volts}V "
echo "| volts=$volts;1.5;1.5;0;1.5"

Agora posso ver o valor no Nagios, mas por que isso funciona apenas localmente e não remotamente? É possível fazer isso sem um arquivo temporário?

    
por syss 12.08.2013 / 10:56

1 resposta

3

O usuário que o Nagios executa exige direitos sudo , exatamente como em sua conta normal. Você pode usar um comando como este para ver o que tem sudo de um usuário:

 $ su - nagios -c "sudo -l"
Matching Defaults entries for nagios on this host:
    requiretty, !visiblepw, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS MAIL PS1 PS2 QTDIR USERNAME LANG
    LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME
    LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", !requiretty

User nagios may run the following commands on this host:
    (root) NOPASSWD: /etc/init.d/nagios* restart
    (root) NOPASSWD: /etc/init.d/nagios restart
    (root) NOPASSWD: /etc/init.d/nagios* reload
    (root) NOPASSWD: /etc/init.d/nagios reload
    (root) NOPASSWD: /usr/bin/nagios* -v *
    (root) NOPASSWD: /usr/bin/nagios -v *
    (root) NOPASSWD: /usr/bin/nagios* -s *
    (root) NOPASSWD: /usr/bin/nagios -s *
    (root) NOPASSWD: /etc/init.d/snmptrapd restart
    (root) NOPASSWD: /etc/init.d/centstorage restart
    (root) NOPASSWD: /etc/init.d/centstorage stop
    (root) NOPASSWD: /etc/init.d/centstorage start

Supondo que o Nagios tenha sudo de direitos para executar o seu comando volts, vcgencmd measure_volts , você também desejará ter certeza de que os direitos sudo são semelhantes aos acima, onde o Nagios pode executar o comando como root e que nenhuma senha é exigida ( NOPASSWD ). Algo parecido com isto no seu arquivo /etc/sudoers deve fazer:

nagios   ALL = NOPASSWD: /path/to/vcgencmd measure_volts core
    
por 12.08.2013 / 14:43