Pregunta

Estoy tratando de extraer una línea del resultado de wget pero tengo problemas con ella. Esta es mi llamada wget:

$ wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml.html

Salida:

--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.

si hago esto:

$ wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml.html | egrep -i "302" <br/>

No me devuelve la línea que contiene la cadena. Solo quiero verificar si el sitio o siteminder está activo.

¿Fue útil?

Solución

La salida de wget que busca está escrita en stderr. Debe redirigirlo:

$ wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml.html 2>&1 | egrep -i "302" 

Otros consejos

wget imprime los encabezados en stderr, no en stdout. Puede redirigir stderr a stdout de la siguiente manera:

wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml.html 2>&1 | egrep -i "302"

El " 2 > & amp; 1 " parte dice redirigir ('>') el descriptor de archivo 2 (stderr) al descriptor de archivo 1 (stdout).

Una versión un poco mejorada de la solución ya proporcionada

  

wget -SO- -T 1 -t 1 http://myurl.com:15000/myhtml. html 2 > & amp; 1 > / dev / null | grep -c 302

2 > & amp; 1 > / dev / null recortará la salida innecesaria. De esta manera, egrep solo analizará wget`s stderr, lo que elimina la posibilidad de capturar cadenas que contienen 302 desde stdout (donde el archivo html mismo salió + barra de proceso de descarga con el recuento de bytes resultante e.t.c.) :)

egrep -c cuenta el número de cadenas coincidentes en lugar de simplemente generarlas. Suficiente para saber cuántas cadenas egrep coinciden.

wget --server-response http://www.amazon.de/xyz 2 > & amp ; 1 | awk '/ ^ HTTP / {print $ 2}'

Solo para explicar un poco. El modificador -S en la pregunta original es la abreviatura de --server-response .

Además, sé que el OP especificó wget , pero curl es similar y por defecto es STDOUT.

curl --head --silent $yourURL

o

curl -I -s $yourURL

El interruptor --silent solo es necesario para grep -ability: ( -s desactiva el medidor de% de progreso)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top