Czy mogę użyć wget do sprawdzenia błędu 404, a nie do pobrania zasobu? Jeśli tak to jak? Dzięki
Odpowiedzi:
Do tego celu służy parametr wiersza poleceń --spider
. W tym trybie wget nie pobiera plików, a jego wartość zwracana wynosi zero, jeśli zasób został znaleziony, i niezerowy, jeśli nie został znaleziony. Spróbuj tego (w swojej ulubionej powłoce):
wget -q --spider address
echo $?
Lub jeśli chcesz uzyskać pełną wydajność, zostaw -q
wyłączone, więc po prostu wget --spider address
. -nv
pokazuje niektóre dane wyjściowe, ale nie tak bardzo, jak domyślne.
wget --spider
wysyła żądanie HEAD, a nie GET.
wget --spider
wykonuje HEAD i, jeśli się powiedzie, następuje z GET do tego samego adresu URL. Dlatego z opcją rekurencyjną jest przydatna do budowania pamięci podręcznej dla witryny sieci Web po stronie serwera.
Jeśli chcesz sprawdzić cicho przez $? bez kłopotów z grep'owaniem wyjścia wget możesz użyć:
wget -q "http://blah.meh.com/my/path" -O /dev/null
Działa nawet w przypadku adresów URL zawierających tylko ścieżkę, ale ma tę wadę, że coś jest naprawdę pobierane, więc nie jest to zalecane podczas sprawdzania istnienia dużych plików.
--spider
Arg ma ustawić kod zwrotny. Ale może dlatego, że po 4 latach, 3 miesiącach i 7 dniach, pająk stał się mądrzejszy.
Tak łatwo.
wget --spider www.bluespark.co.nz
To ci da
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
Jeśli jesteś w katalogu, w którym tylko root ma dostęp do zapisu w systemie. Następnie możesz używać bezpośrednio wget www.example.com/wget-test
przy użyciu standardowego konta użytkownika. Więc trafi na adres URL, ale z powodu braku uprawnień do zapisu plik nie zostanie zapisany. Ta metoda działa dobrze, ponieważ używam tej metody dla cronjob. Dzięki.
sthx
--spider
ta, która robi dokładnie to, o co prosi OP