Frage wget, um Fehler zu drucken, aber sonst nichts


Wie kann ich wget Druckfehler haben, aber sonst nichts?

Im Standardverhalten zeigt es einen Fortschrittsbalken und viele Dinge.

In der --no-verbose Version drucke immer noch eine Zeile pro heruntergeladener Datei, das will ich nicht.

Die Option --quiet bewirkt, dass sie absolut leise ist, selbst im Falle eines Fehlers druckt sie nichts.

Gibt es einen Modus, in dem Fehler gedruckt werden, aber sonst nichts?


20
2017-10-02 18:58


Ursprung




Antworten:


Es gibt sehr gute Antworten in dieser Frage, sicher sein, sie zu überprüfen, aber was ich getan habe, ist das:

wget [wget options] 2>&1 | grep -i "failed\|error"

13
2017-09-29 07:47



Dies war die einzige Antwort, die mit 16.04 Ubuntu Bash für mich funktionierte. - Ligemer


Verwenden Sie curl, keinen Punkt, der rät, wie jeder Fehler aussehen wird.

[wizard@laptop ~] curl -s -S http://www.google.coccm/ > /dev/null && echo "TRUE"
curl: (6) Couldn't resolve host 'www.google.coccm'
[wizard@laptop ~]$ curl -s -S http://www.google.com/ > /dev/null && echo "TRUE"
TRUE

-s / - still

Silent mode. Don’t show progress meter or error messages. Makes Curl mute.

-S / - Show-Fehler

When used with -s it makes curl show error message if it fails.

Und wenn Sie aus irgendeinem Grund stderr auf stdout benötigen.

curl -s -S http://www.google.coccm/  2>&1 1> /dev/null

13
2018-02-22 19:03



Leider behandelt dies nicht typische HTTP-Fehler (zB 404-Fehler werden auf diese Weise unterdrückt), während die Hacky-wget-Methode tut. - process91
Downvote: Obwohl Ihr Vorschlag plausibel ist, beantwortet er die Frage nicht. - Stephan Richter
Add -f / - kann keine Fehlermeldung anzeigen, wenn der Server einen Fehlercode (z. B. 404) zurückgibt - Hontvári Levente
Dies könnte eine gute Antwort sein, wenn die Frage nach Curl oder Curl mit Parität zu wget wäre. Leider ist beides nicht der Fall. - dfc


Ich sehe keine Option dafür. Müssen Sie wissen, was der Fehler ist, oder nur, wenn es passiert ist? Wenn Sie nur wissen müssen, ob ein Fehler aufgetreten ist, können Sie den Beendigungsstatus verwenden.

if ! wget -o /dev/null www.google.com/flasfsdfsdf; then
    echo 'Oops!'
fi

Oder vielleicht:

if ! wget -o logfile www.google.com/flasfsdfsdf; then
    cat logfile
fi

Und Sie können die Katze in einen Grep-Befehl ändern, wenn Sie Lust haben wollen ...


4
2017-10-02 19:36



Einfacher: wget -o Logfile <url> || Katzenlogdatei - kolypto
Der einfachere Weg ist schlechter, da Sie wahrscheinlich im Fehlerfall beenden oder etwas anderes machen möchten, zusätzlich zur Anzeige der Fehlermeldung. - Sam Watkins


Weiterleitung der Standardausgabe an /dev/null, aber behalte die Fehlerausgabe in deiner Shell-Wahl.

In bash wäre das:

wget [wget options] > /dev/null

Bearbeiten: So wget misshandelt. Wenn alle Fehler das Wort "error" in ihnen enthalten, könnten Sie pipen grep

wget [wget options] 2>&1 | grep -i "error"

2
2017-10-02 19:12



wget scheint alles an stderr zu senden. - pupeno
Ich habe eine weitere Option hinzugefügt mit grep nur Fehler ausgeben - Ben S
stderr geht nicht ohne Hilfe durch die Leitung. - Dennis Williamson
Am Ende habe ich wget [wget options] 2> & 1 | grep -i "fehlgeschlagen \ | Fehler" - pupeno


OUT=`wget --no-verbose -O /tmp/a http://example.com/ 2>&1` || echo $OUT

funktioniert. Aber es kürzt immer die Ausgabedatei ab, die Sie wollen oder nicht wollen.

Curl ist besser:

curl --fail --silent --show-error -o /tmp/a http://example.com

Im Falle eines Fehlers wird die Ausgabedatei nicht verändert.


1
2018-06-11 14:08





Schon seit wget gibt alle Nachrichten aus stderr, müssen Sie die Umleitung verwenden, bevor Sie sie an grep übergeben können:

wget [options] 2>&1 | grep "^wget:"

Dies setzt voraus, dass wget beginnt seine Fehlerzeilen mit "wget:".


0
2017-10-02 19:34