Wie lautet der Exit-Code für "curl -I", wenn nicht HTTP 200?

2438
Nemo

Ich möchte prüfen, welcher HTTP-Statuscode für eine HTTP (S) -URL zurückgegeben wird. Ich interessiere mich nicht für den Inhalt, also fordere ich nur head mit curl -I $ url oder curl --head $ url auf

Aber was ist der Exit-Code, nach dem ich prüfen sollte, zB in subprocess.check_call ? Bekomme ich insbesondere einen Exit-Code ungleich Null für HTTP 403?

3

2 Antworten auf die Frage

5
Nemo

curl -Iwird immer zurückkehren 0, wenn mit dem HEAD eine Ausgabe erzeugt wurde. Sie haben zwei Alternativen.

Die erste ist, zu verwenden, curl -I --fail statt, und überprüfen Sie die Exit - Code 22.

Wenn Sie dies in einem Python-Skript ausführen, könnte dies folgendermaßen aussehen:

try: subprocess.check_call(['curl', '-I', '--fail', url]) except subprocess.CalledProcessError as e: if e.returncode == 22: (do something) 

Die zweite besteht darin, tatsächlich nur den HTTP-Statuscode wie folgt zu fragen :

$ curl -s -I -o /dev/null -w '%' $bad-url 403 
1
Tristan Reid

Wenn Sie wirklich nur die HTTP-Statuscodes von einem Python-Skript wünschen, können Sie die Bibliothek "Requests" überprüfen:
http://docs.python-requests.org/de/latest/

#Prints status code:
import requests r = requests.get('http://superuser.com') print(r.status_code)

Richtig, obwohl sich die Frage nur aus anderen Gründen um das Winden handelte. Nemo vor 8 Jahren 0