Pergunta

Eu estou tentando extrair uma linha do resultado do wget, mas tendo problemas com ele. Este é o meu apelo wget:

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

Output:

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

se eu fizer isso:

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

Ela não me retornar a linha que contém a cadeia. Eu só quero verificar se o site ou SiteMinder é para cima.

Foi útil?

Solução

A saída do wget que você está procurando está escrito em stderr. Você deve redirecioná-lo:

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

Outras dicas

wget imprime os cabeçalhos para stderr, não stdout. Você pode redirecionar stderr para stdout como se segue:

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

O "2> & 1" parte diz para redirecionar ( '>') descritor de arquivo 2 (stderr) para descritor de arquivo 1 (stdout).

Um pouco versão de solução já forneceu reforçada

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

2>&1 >/dev/null vai aparar saída desnecessários. Desta forma egrep apenas irá processar wget`s stderr, o que elimina a possibilidade de cordas de captura contendo 302 de stdout (onde próprio arquivo html emitido + download bar proces com resultando bytes contagem e.t.c.):)

contagem egrep -c número de strings combinadas em vez de simplesmente enviá-las. O suficiente para saber o quanto cordas egrep correspondido.

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

Apenas para explicar um pouco. O interruptor -S na pergunta original é uma abreviação para --server-response.

Além disso, eu sei que o OP especificado wget, mas curl é semelhante e padrões para STDOUT.

curl --head --silent $yourURL

ou

curl -I -s $yourURL

O interruptor --silent só é necessário para grep-capacidade: (voltas -s fora progressos% metro)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top