Ich versuche, eine Zeile aus dem Ergebnis von wget zu extrahieren, habe aber Probleme damit. Das ist mein wget-Aufruf:
%Vor%Ausgabe:
%Vor% wenn ich das tue:
Es gibt mir die Zeile, die die Zeichenfolge enthält, nicht zurück. Ich möchte nur überprüfen, ob die Website oder der Siteminder aktiv ist.
Die Ausgabe von wget, nach der Sie suchen, steht auf stderr. Sie müssen es umleiten:
%Vor% wget
druckt die Header auf stderr, nicht auf stdout. Sie können stderr wie folgt in stdout umleiten:
Der "2 & gt; & amp; 1" -Teil sagt, den Dateideskriptor 2 (stderr) in den Dateideskriptor 1 (stdout) umzuleiten ('& gt;').
Eine etwas verbesserte Version der bereits bereitgestellten Lösung
wget -SO- -T 1 -t 1 Ссылка 2 & gt; & amp; 1 & gt; / dev / null | grep -c 302
2>&1 >/dev/null
schneidet nicht benötigte Ausgaben ab. Auf diese Weise wird egrep nur wget's stderr parsen, was die Möglichkeit eliminiert, Strings zu fangen, die 302 von stdout enthalten (wobei html-Datei selbst + Download-Prozessbalken mit resultierender Byteanzahl e.t.c. ausgegeben wird):)
egrep -c
zählt die Anzahl übereinstimmender Zeichenfolgen, anstatt sie einfach auszugeben. Genug, um zu wissen, wie viel Strings egrep erreicht hat.
Nur um etwas zu erläutern. Der Schalter -S
in der ursprünglichen Frage ist eine Abkürzung für --server-response
.
Ich weiß auch, dass das OP wget
angegeben hat, aber curl
ist ähnlich und standardmäßig STDOUT.
oder
%Vor% Der Schalter --silent
wird nur für grep
-ability benötigt: ( -s
schaltet den Fortschritt% meter aus)