Возврат Несколько статусов выхода в nagios

Я пытаюсь написать сценарий оболочки для плагина nagios. У меня есть список неудавшихся узлов, где я должен запускать CRITICAL alert для nagios.

Входные данные :

#cat file OFFLINE OFFLINE OFFLINE OFFLINE 

Все, что я хочу, – отправить статус выхода (т.е. 2) для всех узлов OFFLINE. И вот мой код ниже.

КОД

 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 ) 

Но проблема в том, что цикл работает один раз и выходит с 2, а предупреждение идет для одного узла, а для оставшегося узла мне нужно отправить предупреждение. Есть ли способ написать этот скрипт?

  • Добавить в файлы
  • bash: четкая строка между двумя позициями
  • Bash: итерация с переменной на линии вывода `ls -1`
  • Пакетное переименование файлов с восходящим числом
  • запись вывода xbacklight -get в переменную в сценарии bash
  • Самораспаковывающиеся скрипты: tar -xO и dd
  • Escape [в grep
  • псевдо-интерактивный скрипт ssh
  • One Solution collect form web for “Возврат Несколько статусов выхода в nagios”

    Я не знаком с Nagios и его операцией, но если он принимает только один код выхода за раз, вам нужно немного изменить свой скрипт и запустить его несколько раз.

     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 

    Если вы можете запустить этот сегмент несколько раз, вы получите несколько кодов выхода.

    Linux и Unix - лучшая ОС в мире.