이 Bash NRPE 플러그인이 Nagios에 변수를 반환하지 않는 이유는 무엇입니까?

이 Bash NRPE 플러그인이 Nagios에 변수를 반환하지 않는 이유는 무엇입니까?

여기에 로컬에서 잘 작동하는 스크립트가 있습니다.

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

그러나 Nagios가 해당 정보를 얻으려고 하면 변수가 정의되지 않은 것처럼 "BCM2835 SoC 전압은 V입니다"만 얻습니다.

파일에서 정보를 추출하여 작업할 수 있는 다른 플러그인도 있습니다. 그래서 정보를 임시 파일에 쓰고 다시 변수에 쓸 수 있었습니다.

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

이제 Nagios의 가치를 알 수 있는데 왜 이것은 원격이 아닌 로컬에서만 작동합니까? 임시파일 없이 만들 수 있나요?

답변1

Nagios를 실행하는 사용자에게는 sudo일반 계정과 동일한 권한이 필요합니다. 다음과 같은 명령을 사용하여 sudo사용자가 어떤 권한을 가지고 있는지 확인할 수 있습니다 .

 $ 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

Nagios에 sudovolts 명령을 실행할 권한이 있다고 가정하면 Nagios가 명령을 실행할 수 있고 비밀번호가 필요하지 않도록 vcgencmd measure_voltssudo 권한이 위와 유사한지 확인해야 합니다 ( ). 파일 은 다음과 같아야 합니다.rootNOPASSWD/etc/sudoers

nagios   ALL = NOPASSWD: /path/to/vcgencmd measure_volts core

관련 정보