Parse-http-Response-Header von wget
Frage
Im Versuch, eine Linie von wget Ergebnis zu extrahieren, aber damit Probleme haben. Das ist mein wget Aufruf:
$ wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml.html
Ausgabe:
--18:24:12-- http://xxx.xxxx.xxxx:15000/myhtml.html => `-' Resolving xxx.xxxx.xxxx... xxx.xxxx.xxxx Connecting to xxx.xxxx.xxxx|xxx.xxxx.xxxx|:15000... connected. HTTP request sent, awaiting response... HTTP/1.1 302 Found Date: Tue, 18 Nov 2008 23:24:12 GMT Server: IBM_HTTP_Server Expires: Thu, 01 Dec 1994 16:00:00 GMT Location: https://xxx.xxxx.xxxx/siteminderagent/... Content-Length: 508 Keep-Alive: timeout=10, max=100 Connection: Keep-Alive Content-Type: text/html; charset=iso-8859-1 Location: https://xxx.xxxx.xxxx//siteminderagent/... --18:24:13-- https://xxx.xxxx.xxxx/siteminderagent/... => `-' Resolving xxx.xxxx.xxxx... failed: Name or service not known.
, wenn ich dies tun:
$ wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml.html | egrep -i "302" <br/>
Dabei spielt es keine Rückkehr mir die Zeile, die die Zeichenfolge enthält. Ich will nur überprüfen, ob die Website oder Siteminder liegt.
Lösung
Die Ausgabe von wget Sie suchen, ist auf stderr geschrieben. Sie müssen es umleiten:
$ wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml.html 2>&1 | egrep -i "302"
Andere Tipps
wget
druckt die Header nach stderr, nicht nach stdout. Sie können stderr nach stdout umleiten wie folgt:
wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml.html 2>&1 | egrep -i "302"
Die "2> & 1" -Teil sagt ( '>') Dateideskriptor 2 (stderr) zu umleiten Descriptor 1 (stdout) einzureichen.
Ein bisschen verbesserte Version von bereits vorhandenen Lösung
wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml. html 2> & 1> / dev / null | grep -c 302
2>&1 >/dev/null
wird nicht benötigte Ausgabe abschneiden. Auf diese Weise egrep wget`s Stderr nur analysieren wird, was Möglichkeit Strings von stdout enthält 302 zu fangen eliminiert (wo HTML-Datei selbst + Download Vorarb bar ausgegeben mit resultierenden Bytes zählen e.t.c.):)
egrep -c
zählt Anzahl der gefundenen Strings, anstatt einfach ausgeben. Genug, um zu wissen, wie viele Saiten abgestimmt EGREP.
wget --server-Antwort http://www.amazon.de/xyz 2> & 1 | awk '/ ^ HTTP / {print $ 2}'
Nur ein bisschen explizieren. Der -S
Schalter in der ursprünglichen Frage ist für --server-response
Kurzschrift.
Auch ich kenne den OP angegeben wget
, aber curl
ist ähnlich und standardmäßig STDOUT.
curl --head --silent $yourURL
oder
curl -I -s $yourURL
Der --silent
Schalter nur für grep
-Fähigkeit benötigt wird: (-s
erlischt Fortschritt% Meter)