Чи можу я за допомогою wget перевірити наявність 404 і фактично не завантажити ресурс? Якщо так, то як? Дякую
Відповіді:
Для цього існує параметр командного рядка --spider
. У цьому режимі wget не завантажує файли, і його повернене значення дорівнює нулю, якщо ресурс був знайдений, і ненульовому, якщо його не було знайдено. Спробуйте це (у вашій улюбленій оболонці):
wget -q --spider address
echo $?
Або якщо ви хочете отримати повний вихід, залиште -q
вимкнене, так просто wget --spider address
. -nv
показує певний результат, але не такий, як за замовчуванням.
wget --spider
надсилається запит HEAD, а не GET.
wget --spider
робить HEAD і, якщо вдається, переходить з GET до тієї самої URL-адреси. Таким чином, з рекурсивною опцією це корисно для побудови кешу для веб-сайту на стороні сервера.
Якщо ви хочете перевірити тихо через $? без клопоту про grep'ing виводу wget ви можете використовувати:
wget -q "http://blah.meh.com/my/path" -O /dev/null
Працює навіть з URL-адресами лише із шляхом, але має той недолік, що щось дійсно завантажено, тому це не рекомендується під час перевірки великих файлів на наявність.
--spider
Аргумент має встановити код повернення. Але, можливо, це тому, що через 4 роки 3 місяці та 7 днів павук став розумнішим.
Так легко.
wget --spider www.bluespark.co.nz
Це дасть вам
Resolving www.bluespark.co.nz... 210.48.79.121
Connecting to www.bluespark.co.nz[210.48.79.121]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
200 OK
Якщо ви знаходитесь у каталозі, де лише root має доступ для запису в систему. Тоді ви можете безпосередньо використовувати wget www.example.com/wget-test
стандартний обліковий запис користувача. Отже, це вдарить по URL-адресі, але через відсутність файлу дозволу на запис не буде збережено .. Цей метод для мене працює нормально, оскільки я використовую цей метод для cronjob. Дякую.
sthx
--spider
який робить саме те, що запитує OP