Ist es möglich, cURL anzuweisen, die Ausgabe des Antwortkörpers zu unterdrücken?
In meinem Fall ist der Antworttext eine HTML-Seite, die den CLI-Puffer überläuft und es schwierig macht, die relevanten Informationen zu finden. Ich möchte die anderen Teile der Ausgabe wie HTTP-Antwortcode, Header usw. untersuchen - alles außer dem eigentlichen HTML.
-s -o nul
aber auf meinem Windows-Computer wirdcurl -s -o nul -v http://{internal-host}/{internal-uri}
das gesamte HTML der Seitecurl -s -o nul -v http://google.com
ausgegeben - ich habe es versucht und es unterdrückt die Ausgabe wie erwartet, daher verstehe ich nicht, warum dies für meine interne Site nicht funktioniert-o
Gibt nur eine URL-Ausgabe an: Wenn Sie mehrere URLs haben, wird nur die erste verworfen :(NUL
und/dev/null
. Verwenden-sIXGET
ist eine bessere Option IMO.Hier ist eine Möglichkeit, alle Curl-Ausgaben und Header zu unterdrücken, mit der Option, weiterhin Fehler anzuzeigen, wenn sie auftreten. Nützlich für Cron-Jobs oder automatisierte Tests.
Unix
So unterdrücken Sie alle Ausgaben:
So unterdrücken Sie die Ausgabe, zeigen aber dennoch Fehler an, wenn sie auftreten:
Windows
So unterdrücken Sie alle Ausgaben:
So unterdrücken Sie die Ausgabe, zeigen aber dennoch Fehler an, wenn sie auftreten:
Erklärte Parameter
--silent
Unterdrückt die laufenden Download-Statistiken (zeigt jedoch weiterhin die HTML-Ausgabe an).--output /dev/null
Versteckt die erfolgreiche Ausgabe und--show-error
zeigt Fehler an. Selbst wenn dersilent
Modus aktiviert ist,--fail
wird ein Fehler ausgegeben , wenn die HTTP-Antwort ein Fehlercode (404, 500 usw.) anstelle von lediglich DNS / ist. TCP-Fehler.UPDATE: Mir ist klar, dass der ursprüngliche Autor die Header und den Antwortcode einer Anfrage überprüfen wollte, anstatt alles zum Schweigen zu bringen . Siehe samael Antwort für Details, wie das zu tun.
quelle
NUL
und/dev/null
. Verwenden-sIXGET
ist eine bessere Option IMO.curl -vo/dev/null
/curl -voNUL
… gesucht und ich weiß nicht, ob es eine tragbare Variante davon gibt, hrm… ;-).Wenn Sie Header anzeigen, aber den Antworttext ausblenden möchten, sollten Sie Folgendes verwenden:
Ich hatte
curl -I http://somedomain.com/your/url
nur Antwort-Header angezeigt. Das Problem dabei ist jedoch, dass die Anfrage mit derHEAD
Methode gestellt wird, die nicht gut ist, wenn Sie einen API-Aufruf testen möchten, der nur auf eineGET
Anfrage antwortet . Dafür ist das gedacht-X GET
, es ändert die Anfrage in aGET
.Also zusammenfassend:
-s
Blendet die Fortschrittsbalken vor der Ausgabe aus (besonders nützlich beim Weiterleiten an ein anderes Programm).-I
Zeigt Header an (stellt jedoch eineHEAD
Anforderung) und-XGET
konvertiert die Anforderung zurück in eineGET
Anforderungsiehe: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/
quelle
curl -i
macht genau das gleiche.-i
enthält den HTTP-Header in der Ausgabe sowie den Body. Versuch es.curl -i http://google.com
ist nicht dasselbe wiecurl -IXGET http://google.com