Возврат Несколько статусов выхода в 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, а предупреждение идет для одного узла, а для оставшегося узла мне нужно отправить предупреждение. Есть ли способ написать этот скрипт?

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 

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

  • Может ли сценарий bash сбросить и дезинфицировать * всю * среду и как?
  • Как использовать одинарные кавычки внутри ssh и sqlplus
  • Как запустить код в фоновом режиме?
  • Запрос Bash на запись в каждый каталог под некоторым путем и запуск команды, когда он внутри?
  • Сценарий Bash не может распознавать переменную как часть пути
  • Что быстрее - сценарии C или оболочки - и почему?
  • команда не найдена в сценарии оболочки
  • Сценарий Bash с ssh, не возвращающим значение переменных
  • `eval` работает на Ubuntu, но не работает на Debian и Kali
  • Регулярное выражение для потока данных
  • Что именно делает этот скрипт?
  • Linux и Unix - лучшая ОС в мире.