Czy mogę użyć wget do sprawdzenia, ale nie do pobrania


Odpowiedzi:


116

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 -qwyłączone, więc po prostu wget --spider address. -nvpokazuje niektóre dane wyjściowe, ale nie tak bardzo, jak domyślne.


29
Zauważ, że wget --spiderwysyła żądanie HEAD, a nie GET.
hammar,

3
@hammer, nie jestem pewien, jakiej wersji mogłeś używać, ale z 1.14 wget --spiderwykonuje 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.
danorton

27

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.


--spiderArg ma ustawić kod zwrotny. Ale może dlatego, że po 4 latach, 3 miesiącach i 7 dniach, pająk stał się mądrzejszy.
John Red

Nie sprawdzałem tego ostatnio, ale nie zdziwiłbym się, gdyby w międzyczasie to naprawili.
3ronco

16

Możesz użyć następującej opcji, aby sprawdzić pliki:

wget --delete-after URL

14

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

-3

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-testprzy 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


1
Nie powinno być używane ... Ryzykowne, ponieważ uprawnienia od administratora systemu mogą zmienić i złamać twój zamiar i bezużyteczne, gdy jest wbudowana flaga, taka jak --spiderta, która robi dokładnie to, o co prosi OP
Luke Savefrogs
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.