Проверка состояния служб поддержки со сценарием

Можно использовать yum сделать установку также.

$ yum --nogpgcheck localinstall *.rpm

Yum затем удостоверится, что зависимости все установлены прежде, чем попытаться установить. Это даже изучит предложенные .rpm файлы, которые Вы пытаетесь установить, чтобы удостовериться, что их зависимости удовлетворены.

В целом это обычно - плохая идея попытаться установить несколько .rpm файлов, использующих единственный rpm -ivh .... Лучше включать их всех в одну командную строку так, чтобы rpm может проверить зависимости через весь набор .rpms также.

3
10.06.2014, 09:29
2 ответа

неткат на помощь... Netcat очень похож на telnet, но с несколькими дополнительными сумасшедшими опциями. Одной из особенностей использования в данном случае является -z, который просто проверяет, работает ли соединение. Наряду с переменной таймаута, вы можете попросить систему повторно проверить, прослушивает ли сервис.

У меня ssh включен локально, но не telnet.

$ nc -zw10 localhost 22
$ echo $?
0
$ nc -zw10 localhost 23
$ echo $?
1

И для большей ясности при тестировании... Это предполагает 2-х минутный тайм-аут, о котором вы упоминали ранее. Он проверяет 4 раза с тайм-аутом в полминуты каждый раз. Штампы даты, вероятно, были бы лучше, но это начало.

for i in {1..4}; do
  nc -zw30 localhost 22
  x=$?
  [[ $x -eq 0 ]] && break
done
if [[ $x -eq 0 ]]; then
  echo 'Service started successfully' >> ${log}
else
  echo 'Service did not start within the specified timeout' >> ${log}
fi
start next service
3
27.01.2020, 21:19

Другой способ проверить состояние порта - использовать утилиту netstat .

user@debian:~$ netstat -4 -l --tcp -p # Show programs listening to IPv4/TCP ports
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address    State       
tcp        0      0 *:53             *:*            LISTEN   2389/named      
tcp        0      0 *:22             *:*            LISTEN   2936/sshd       
tcp        0      0 *:5432           *:*            LISTEN   2475/postgres   
tcp        0      0 *:25             *:*            LISTEN   2961/exim4 

Здесь я вижу, что демоны DNS, SSH, PosgtreSQL и Mail работают, поскольку они прослушивают соответствующие порты. Более того, последний столбец сообщает мне, какое приложение прослушивает каждый конкретный порт.

Скрипт для проверки отдельной службы будет выглядеть так:

PORT=... the port we need to check ...
# Current time in seconds + 15 minutes
TRYUNTIL=$(( $(date +%s) - (60*15) ))
# 0 is down, 1 is up
STATUS=0

# While the service is still down and the current time is before our limit
while [[ (( $STATUS = 0 )) && (( $(date +%s) < $TRYUNTIL ))  ]]
do
   STATUS=$(netstat -4 -l --tcp | grep "*:$PORT" | wc -l)
   # Lets not overload the system with constant checking,
   # if the service is still down
   if [[ $STATUS = 0 ]]; then
        sleep 5s
   fi
done
1
27.01.2020, 21:19

Теги

Похожие вопросы