Избегайте многократного перезапуска службы httpd в скрипте bash - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть сценарий оболочки, который проверяет наличие ошибок и возвращает статус «0» (все в порядке) или «1» (требуется исправление).Я ищу, чтобы добавить команду httpd restart, когда проверка не проходит (что в идеале решит проблему).Однако я не хочу, чтобы служба перезапускалась слишком часто, скажем, не более 4 раз.

Ниже приведен сценарий оболочки:

response=$(curl -s --max-time 15 --header ‘Host: xyz.testurl.com’ "https://localhost/login/creds.kcc?&TARGET=https:xyz.testurl.com" --insecure 2>/dev/null)

if [ "$response" = "error_msg" ]
then
        echo "Service,host=$prd,pattern=errocheck value=1"
else
        echo "Service,host=$prd,pattern=errocheck value=0"
fi

Я могу добавить команду service httpd restartв цикле if, но это будет означать, что он будет перезапускать сервис каждый раз, когда проверка ошибок завершится неудачно.Я хотел бы сохранить какой-то контроль над перезагрузками.

Любая помощь приветствуется

1 Ответ

0 голосов
/ 21 сентября 2019

Если ваш вопрос

  • , если "$ response" = "error_msg", тогда выполните "service httpd restart"
  • , но перезапуски выполняются не более 4 раз.

Итак,

#!/bin/bash
for n in $(seq 4)
do
    response=$(curl -s --max-time 15 --header ‘Host: xyz.testurl.com’ "https://localhost/login/creds.kcc?&TARGET=https:xyz.testurl.com" --insecure 2>/dev/null)
    if [ "$response" != "error_msg" ]; then
        exit 0
    fi
    service httpd restart
    sleep 10 # temporary solution                                               
done
exit 1
...