2008-11-19 20 views
8

Im tratando de extraer una línea del resultado de wget pero teniendo problemas con él. Este es mi llamado wget:analizar encabezado de respuesta http de 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/> 

Me doesnt regresar la línea que contiene la cadena. Solo quiero comprobar si el sitio o el webminder están activos.

Respuesta

15

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

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

wget imprime los encabezados de salida estándar de errores, no por la salida estándar. 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> & 1" parte dice redirigir ('>') archivo descriptor 2 (stderr) para el descriptor de archivo 1 (stdout).

+0

Buenos detalles adicionales a la respuesta de @Piotr. –

2

Un bit versión mejorada de la solución ya prevista

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

2>&1 >/dev/null recortará la salida innecesaria. De esta manera egrep analizará solamente wget`s stderr, lo que elimina la posibilidad de atrapar cadenas que contienen 302 de salida estándar (donde propio archivo HTML emite + descargar proces de barras con el resultado de bytes de cuenta, etc.) :)

egrep -c recuento de número de cadenas coincidentes en su lugar de simplemente darles salida. Suficiente para saber cuántas cuerdas egrep emparejó.

1

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

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

curl --head --silent $yourURL 

o

curl -I -s $yourURL 

El interruptor --silent sólo es necesaria para grep -Capacidad: (-s se apaga% del contador de avance)

+0

algunos servidores no responden a una solicitud principal – user3791372

Cuestiones relacionadas