nrpe o usuário não pode executar corretamente o script remotamente usando lsof, netstat works

1

Eu criei um script simples para nagios para verificar uma porta em um servidor remoto. Originalmente, tentei usar lsof .

#!/bin/bash

RESULT=$(lsof -i :8080 | grep LISTEN)

if [ -n "$RESULT" ]
  then
  echo "$RESULT"
exit 0
  else
   echo "Check application port is down"
exit 2
fi

Na máquina local, o usuário nagios pode executar e executar o script e obter a saída esperada. Mas remotamente, usando check_nrpe , eu sempre recebi o eco de volta

Check application port is down

Embora, como eu disse, executar o script localmente, funcionou corretamente

O usuário nrpe tinha todos os direitos necessários para executar o script, o SELinux estava no modo permissivo, mas nunca consegui fazê-lo funcionar. Então eu mudei a linha RESULT para usar netstat .

RESULT=$(netstat -anp | grep ":8080" | grep LISTEN)

E então eu poderia recuperar a resposta esperada usando check_nrpe remotamente. Então, suponho que isso seja algum tipo de problema com check_nrpe e lsof . Mas eu nunca consegui encontrar nada nos logs.

Alguém tem alguma idéia ou sugestão para fazer isso funcionar com lsof ?

    
por user53029 21.04.2016 / 17:25

1 resposta

2

Os usuários não root não veem nenhuma saída de lsof -i . (Confirmado no Debian 8 e Cent 7, sem o SELinux.)

Se você quisesse usar isso em um teste de nagios, você teria que executar o lsof através do sudo.

Se o sudo estiver configurado para exigir um tty (pode ser o padrão no CentOS), você pode fazer algo assim:

Defaults:nagios !requiretty
nagios ALL=NOPASSWD:/usr/bin/lsof

Substitua nagios por nrpe , se necessário, e modifique o caminho para lsof, se necessário.

    
por 22.04.2016 / 19:52