Я пытаюсь настроить еще один блок кода в скрипте bash, чтобы проверить, работает ли публичный веб-сайт на HTTPS. Можно ли сделать это с помощью CURL? Есть предложения, что можно использовать помимо CURL. Спасибо
решение1
Вот способ сделать это с помощью wget вместо curl. Имейте в виду, что MacOS не поставляется с wget по умолчанию.
Успешный веб-запрос вернет код 200, неудачный — 300, 400, 404 и т. д. (см.Коды REST API)
Эта строка вернет a, 1
если веб-запрос был успешным, в противном случае она вернет0
wget -q -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l
1
решение2
Один из многих:
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
решение3
Нагиос'плагин 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
решение4
на аналогичный вопрос был дан ответ здесь:
https://stackoverflow.com/questions/12747929/linux-script-with-curl-to-check-webservice-is-up
Цитата от Бурхана Халида
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.
Для всего остального вам необходимо определить свой ответ в сценарии.