Назад | Перейти на главную страницу

Сценарий Bash для проверки, открыт ли общедоступный HTTPS-сайт

Я пытаюсь настроить другой блок кода для сценария bash, чтобы проверить, работает ли общедоступный веб-сайт на HTTPS или нет. Можем ли мы сделать это с помощью CURL? Любые предложения, которые можно использовать помимо CURL. Спасибо

Один из многих:

if curl -s --head  --request GET https://example.com | grep "200 OK" > /dev/null; then 
   echo "mysite.com is UP"
else
   echo "mysite.com is DOWN"
fi

Вот способ сделать это с помощью wget вместо curl. Имейте в виду, что MacOS по умолчанию не поставляется с wget.

Успешный веб-запрос вернет код 200, сбой вернет 300, 400, 404 и т. Д. (См. Коды REST API)

Эта строка вернет 1 если веб-запрос был успешным, иначе он вернет 0

wget -q  -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l
1

Nagios ' плагин check_http может делать это и многое другое, в том числе проверять конкретный текст в ответе. Вы можете запустить его из сценария оболочки независимо от самого Nagios:

$ check_http --ssl -H www.google.com -r 'Feeling Lucky'
HTTP OK: HTTP/1.1 200 OK - 11900 bytes in 0.086 second response time |time=0.085943s;;;0.000000 size=11900B;;;0

$ echo $?
0

Почему бы не использовать полноценное решение для мониторинга? Я обнаружил, что для этого очень подходит monit: http://mmonit.com/monit/

(это произошло после многих лет использования самодельных сценариев bash - я обнаружил, что monit легче переносить в разные устройства и более надежен, чем некоторые беспорядочные сценарии. Не знаю об их платной версии).

здесь был дан ответ на похожий вопрос:

https://stackoverflow.com/questions/12747929/linux-script-with-curl-to-check-webservice-is-up

Qoute от Бурхана Халида

curl -sL -w "% {http_code} \ n" "http://www.google.com/"-o / dev / null

-s = Тихий вывод cURL

-L = следовать переадресации

-w = Пользовательский формат вывода

-o = Перенаправляет вывод HTML в / dev / null

Пример:

[~] $ curl -sL -w "% {http_code} \ n" "http://www.google.com/"-o / dev / null

Я бы, вероятно, удалил \ n, если бы он записывал вывод.

поэтому вам просто нужно добавить -k в параметры, если вы не хотите проверять действительный сертификат и, очевидно, использовать https вместо http.

curl -sL -w "%{http_code}\n" "https://www.google.com/" -o /dev/null

сообщает код состояния 200 с кодом возврата 0.

Для всего остального вам нужно определить свой ответ в скрипте.