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.

War es hilfreich?

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)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top