Назад | Перейти на главную страницу

wget выводит ошибки, но иначе ничего

Как у меня могут быть ошибки печати wget, но иначе ничего?

По умолчанию он показывает индикатор выполнения и многое другое.

В версии --no-verbose по-прежнему печатается одна строка для каждого загруженного файла, я этого не хочу.

Параметр --quiet заставляет его работать совершенно тихо, даже в случае ошибки он ничего не печатает.

Есть ли режим, в котором он выводит ошибки, а больше ничего?

На этот вопрос есть очень хорошие ответы, обязательно ознакомьтесь с ними, но я сделал следующее:

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

Используйте 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.

И если вам по какой-то причине нужен stderr на stdout.

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

Я не вижу для этого варианта. Вам нужно знать, в чем ошибка, или просто произошло ли это? Если вам просто нужно узнать, произошла ли ошибка, вы можете использовать статус выхода.

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

И вы можете изменить кота на команду grep, если хотите пофантазировать ...

Перенаправить стандартный вывод на /dev/null, но сохраните вывод ошибки в выбранной вами оболочке.

В bash это будет:

wget [wget options] > /dev/null

Редактировать: Так wget плохо себя ведет. Если все ошибки содержат слово «ошибка», вы можете перенаправить grep

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

поскольку wget выводит все сообщения на stderr, вам нужно использовать перенаправление, прежде чем вы сможете передать его в grep:

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

Это предполагает, что wget строки ошибок начинаются с "wget:".

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

В случае ошибки он не изменяет выходной файл.