Retornar vários status de saída para nagios

1

Estou tentando escrever um script de shell para o plugin nagios. Eu tenho uma lista de nós com falha onde eu tenho que acionar um alerta crítico para os nagios.

Entrada:

#cat file
 OFFLINE
 OFFLINE
 OFFLINE
 OFFLINE

Tudo que eu quero é enviar o status de saída (ou seja, 2) para todos os nós OFFLINE. E aqui está o meu código abaixo.

CÓDIGO

while read -r output;
do
  STATE=$(echo $output)

  if [ $STATE == "OFFLINE" ]; then
        echo "CRITICAL: STATE is $STATE" 
        exit 2
  else
        echo  "OK " > /dev/null
  fi
done< <( cat file )

Mas o problema é que o loop é executado por uma vez e sai com 2, e o alerta vai para um nó e, para o nó restante, eu preciso enviar o alerta. Existe alguma maneira de escrever este script?

    
por Prasanna Ranganthan 25.05.2016 / 16:58

1 resposta

0

Eu não estou familiarizado com o Nagios e sua operação, mas se for necessário apenas um código de saída de cada vez, você precisará modificar um pouco seu script e executá-lo várias vezes.

output=$(head -1 file)  # read first line
sed -i -e '1,1d' file   # delete the first line

  STATE=$(echo $output)

  if [ $STATE == "OFFLINE" ]; then
        echo "CRITICAL: STATE is $STATE" 
        exit 2
  else
        echo  "OK " > /dev/null
  fi

Se você puder executar este segmento várias vezes, receberá vários códigos de saída.

    
por 25.05.2016 / 17:28