Я пытаюсь настроить другой блок кода для сценария 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.
Для всего остального вам нужно определить свой ответ в скрипте.