
У меня есть скрипт bash, который запускает серию команд wget и регистрирует вывод. Я использую следующие параметры:
wget --no-verbose --page-requisites --adjust-extension --convert-links --backup-converted --timestamping --wait=1 --random-wait --append-output="$logfile" --recursive --level=2 http://example.com
Журналы должны заканчиваться следующим образом:
Terminé — 2014-10-09 18:06:40 —
Temps total effectif : 1m 7s
Téléchargés : 11 fichiers, 79K en 0,06s (1,22 MB/s)
Но иногда такого резюме нет, и я вижу только допущенные ошибки:
http://example.com/robots.txt:
2014-10-09 18:06:41 erreur 404 : Ce fichier n'existe pas (404).
http://example.com/index.html:
2014-10-09 18:08:27 erreur 404 : Ce fichier n'existe pas (404).
http://example.com/folder1/folder2/default.asp.html:
2014-10-09 18:08:31 erreur 404 : Ce fichier n'existe pas (404).
http://example.com/folder1/index.html:
2014-10-09 18:08:56 erreur 404 : Ce fichier n'existe pas (404).
http://example.com/folder1/folder2/folder3/"../images/bullet.gif":
2014-10-09 18:09:28 erreur 403 : Action interdite.
Почему wget не показывает сводку? Это потому, что не было загружено ни одного нового файла, или потому, что было слишком много ошибок сервера (404, 403)?
решение1
Это потому, что не было загружено ни одного нового файла,[...]?
Да. Вот именно. Если загружено ноль байт, то сводки не будет. Это из-за второй половины оператора if ниже: "total_downloaded_bytes != 0"
Источник изwget Git-репозиторий:
if ((opt.recursive || opt.page_requisites
|| nurl > 1
|| (opt.input_filename && total_downloaded_bytes != 0))
&&
total_downloaded_bytes != 0)
Как заставить wget вывести сводку?
Кажется, нет возможности это форсировать. Я могу придумать следующие альтернативы:
- Удалите две строки из исходного кода и перекомпилируйте свою собственную сборку.
- Подайте запрос на функцию для явной опциитрекер ошибок wget.
- Загружайте 1-байтовый фиктивный файл каждый раз. Это должно заставить отобразить сводку.