Скрипт для обнаружения и отчета о запуске / остановке измененной службы

#bash #service

#bash #Обслуживание

Вопрос:

Я пытаюсь написать скрипт bash, который определяет, изменила ли служба состояние. У меня пока есть это:

 while true; do
     if [ -z "$(netstat -tulpn | grep 51827)" ];
     then
         echo notinuse
     else
         echo inuse
     fi
sleep 5
done
  

Он работает, но он будет бесконечно записывать, когда служба работает или не работает, и я хочу, чтобы он сообщал только о первом экземпляре изменения состояния. Итак, сообщайте, когда служба была отключена, а затем запущена, а также когда она была запущена, а затем отключилась.

Я начал создавать счетчики циклов и сравнивать с предыдущим запуском, но попал в полный беспорядок переменных. Кто-нибудь может помочь?

Ответ №1:

 if [ -z "$(netstat -tulpn | grep 51827)" ];
     then

         echo notinuse
         notify_status="notinuse-sent"
         

     else
         echo inuse
         notify_status="inuse-sent"
         
     fi


while true; do
     if [ -z "$(netstat -tulpn | grep 51827)" ];
     then
         if [ $notify_status = "notinuse-sent" ]; then
               echo "already notified"
         else
               echo notinuse
               $notify_status="notinuse-sent"
         fi
         
         
         

     else
         if [ $notify_status = "inuse-sent" ]; then
               echo "already notified"
         else 
               echo inuse 
               $notify_status="inuse-sent"
         fi

         
     fi
sleep 5
done
  

Комментарии:

1. Спасибо за это. В итоге я нарисовал логику на какой-то бумаге, и это значительно упростило работу с необходимыми параметрами. Удалось заставить его работать именно так, как я хотел, с помощью нескольких настроек вашего кода выше.