Domanda

Sto cercando di estrarre una linea dal risultato di wget ma ho problemi con essa. Questa è la mia chiamata 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 lo faccio:

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

Non mi restituisce la riga che contiene la stringa. Voglio solo verificare se il sito o il siteminder sono attivi.

È stato utile?

Soluzione

L'output di wget che stai cercando è scritto su stderr. Devi reindirizzarlo:

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

Altri suggerimenti

wget stampa le intestazioni su stderr, non su stdout. Puoi reindirizzare stderr a stdout come segue:

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

Il " 2 > & amp; 1 " parte dice di reindirizzare ('>') descrittore di file 2 (stderr) al descrittore di file 1 (stdout).

Una versione leggermente migliorata della soluzione già fornita

  

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 eliminerà l'uscita non necessaria. In questo modo egrep analizzerà solo lo stderr di wget, ciò che elimina la possibilità di catturare stringhe contenenti 302 da stdout (dove il file html stesso è stato emesso + download proces bar con byte risultanti contano e.t.c.) :)

egrep -c conta il numero di stringhe corrispondenti anziché semplicemente emetterle. Abbastanza per sapere quante stringhe egrep corrispondono.

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

Solo per spiegare un po '. L'opzione -S nella domanda originale è una scorciatoia per --server-response .

Inoltre, conosco il wget specificato dall'OP, ma curl è simile e predefinito a STDOUT.

curl --head --silent $yourURL

o

curl -I -s $yourURL

L'opzione --silent è necessaria solo per grep -abilità: ( -s disattiva il misuratore% di progresso)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top