wget打印错误,但没有其他显示


27

我怎么能得到wget打印错误,但是没有别的?

在默认行为中,它显示进度条和许多内容。

在--no-verbose版本中,每个下载的文件仍打印一行,这是我不希望的。

--quiet选项使它完全安静,即使发生错误,也不打印任何内容。

是否有打印错误的模式,但没有其他打印?

Answers:


17

这个问题有很好的答案,一定要检查出来,但是我所做的是:

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

这是使用16.04 ubuntu bash对我有用的唯一答案。
Ligemer '16

17

使用curl,毫无意义地猜测每个错误的外观。

[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 /-静音

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

-S /-显示错误

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

并且由于某种原因如果您需要在stdout上使用stderr。

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

1
不幸的是,这不能处理典型的HTTP错误(例如,以这种方式抑制了404错误),而骇客的wget方法却可以。
process91

Downvote:尽管您的建议是合理的,但它不能回答问题。
斯蒂芬·里希特

添加-f / -失败如果服务器返回错误代码显示错误消息(例如,404)
Hontvári利文特

如果问题是关于卷曲的,或者卷曲与wget具有特征奇偶性,那么这可能是一个很好的答案。不幸的是,情况并非如此
。– dfc

4

我没有看到这样的选择。您是否需要知道错误是什么,还是仅仅知道它是否已发生?如果您只是想知道是否有错误,可以使用退出状态。

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

或许:

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

如果您想花哨的话,可以将cat更改为grep命令...


3
更简单的方法:wget -o logfile <URL> || 猫日志文件
kolypto

更简单的方法更糟,因为除了显示错误消息外,您可能还想退出或对错误执行其他操作。
Sam Watkins

2

将标准输出重定向到/dev/null,但将错误输出保留在您选择的Shell中。

用bash表示:

wget [wget options] > /dev/null

编辑:所以wget行为不端。如果所有错误中都包含“错误”一词,则可以通过管道grep

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

wget似乎将所有内容发送到stderr。
pupeno

我用添加了另一个选项grep只输出错误
奔小号

stderr没有帮助就不会通过管道。
暂停,直到另行通知。

1
最后,我使用了wget [wget options] 2>&1 | grep -i“失败\ |错误”
pupeno

1

由于在上wget输出所有消息stderr,因此必须先使用重定向,然后才能将其通过管道传递到grep:

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

假定wget从“ wget:”开始其错误行。


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

作品。但是它总是会截断您可能想要的输出文件。

卷曲更好:

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

发生错误时,它不会修改输出文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.