Ich versuche, einen weiteren Codeblock für ein Bash-Skript einzurichten, um zu prüfen, ob eine öffentliche Website über HTTPS aktiv ist oder nicht. Können wir das mit CURL machen? Irgendwelche Vorschläge, was außer CURL verwendet werden kann? Danke
Antwort1
Hier ist eine Möglichkeit, dies mit wget statt curl zu tun. Beachten Sie, dass wget bei MacOS nicht standardmäßig enthalten ist.
Eine erfolgreiche Web-Anfrage gibt den Code 200 zurück, ein Fehler 300, 400, 404 usw. (sieheREST-API-Codes)
Diese Zeile gibt ein zurück, 1
wenn die Web-Anfrage erfolgreich war, andernfalls wird sie zurückgegeben0
wget -q -O /tmp/foo google.com | grep '200' /tmp/foo | wc -l
1
Antwort2
Einer von vielen:
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
Antwort3
Nagios'check_http-Pluginkann dies und noch viel mehr, einschließlich der Überprüfung auf bestimmten Text in der Antwort. Sie können es unabhängig von Nagios selbst von einem Shell-Skript aus ausführen:
$ 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
Antwort4
eine ähnliche Frage wurde hier beantwortet:
https://stackoverflow.com/questions/12747929/linux-script-with-curl-to-check-webservice-is-up
Das Zitat stammt von Burhan Khalid
curl -sL -w "%{http_code}\n" "http://www.google.com/" -o /dev/null
-s = Stille cURL-Ausgabe
-L = Weiterleitungen folgen
-w = Benutzerdefiniertes Ausgabeformat
-o = Leitet die HTML-Ausgabe nach /dev/null um
Beispiel:
[~]$ curl -sL -w "%{http_code}\n" "http://www.google.com/" -o /dev/null
Ich würde wahrscheinlich das \n entfernen, wenn die Ausgabe erfasst werden sollte.
Sie müssen also nur -k in den Optionen hinzufügen, wenn Sie nicht nach einem gültigen Zertifikat suchen und offensichtlich https statt http verwenden möchten.
curl -sL -w "%{http_code}\n" "https://www.google.com/" -o /dev/null
meldet den Statuscode 200 mit einem Rückgabecode von 0.
Für alles andere müssen Sie Ihre Antwort im Skript definieren.