analizza l'intestazione della risposta http da wget
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.
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)