Question

J'essaie d'extraire une ligne du résultat de wget mais j'ai des problèmes avec cela. Ceci est mon appel wget:

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

Sortie:

--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 je fais cela:

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

Il ne me renvoie pas la ligne contenant la chaîne. Je veux juste vérifier si le site ou siteminder est en ligne.

Était-ce utile?

La solution

Le résultat de wget que vous recherchez est écrit sur stderr. Vous devez le rediriger:

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

Autres conseils

wget imprime les en-têtes sur stderr, pas sur stdout. Vous pouvez rediriger stderr vers stdout comme suit:

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

Le " 2 > & amp; 1 " partie dit de rediriger ('>') le descripteur de fichier 2 (stderr) vers le descripteur de fichier 1 (stdout).

Version légèrement améliorée de la solution déjà fournie

  

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 coupera les sorties inutiles. De cette façon, egrep analysera uniquement le paramètre stderr de wget, ce qui élimine la possibilité d’attraper des chaînes contenant 302 à partir de stdout (où le fichier html est lui-même généré + la barre de traitement avec le nombre d’octets résultant e.t.c.):)

egrep -c compte le nombre de chaînes correspondantes au lieu de simplement les afficher. Assez pour savoir combien de chaînes egrep correspondait.

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

Juste pour expliquer un peu. Le commutateur -S de la question initiale est un raccourci pour - server-response .

De plus, je connais l'OP spécifié wget , mais curl est similaire et prend par défaut la valeur STDOUT.

curl --head --silent $yourURL

ou

curl -I -s $yourURL

Le commutateur - silent est nécessaire uniquement pour grep . -ability: ( -s désactive le% de progression)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top