Can I use wget to check , but not download
Asked Answered
B

6

103

Can I use wget to check for a 404 and not actually download the resource? If so how? Thanks

Barcus answered 7/6, 2011 at 11:48 Comment(1)
possible duplicate of Only create file if http status 200 with wget?Hashim
B
152

There is the command line parameter --spider exactly for this. In this mode, wget does not download the files and its return value is zero if the resource was found and non-zero if it was not found. Try this (in your favorite shell):

wget -q --spider address
echo $?

Or if you want full output, leave the -q off, so just wget --spider address. -nv shows some output, but not as much as the default.

Bendy answered 7/6, 2011 at 11:58 Comment(2)
Note that wget --spider sends a HEAD request, not a GET.Went
@hammer, I'm not sure what version you might have been using, but with 1.14, wget --spider does a HEAD and, if successful, follows with a GET to the same URL. Thus, with the recursive option, it's useful for building the cache for a server-side website.Morganne
S
34

If you want to check quietly via $? without the hassle of grep'ing wget's output you can use:

wget -q "http://blah.meh.com/my/path" -O /dev/null

Works even on URLs with just a path but has the disadvantage that something's really downloaded so this is not recommended when checking big files for existence.

Sample answered 30/9, 2012 at 12:31 Comment(2)
The --spider arg does set a return code. But maybe that's because after 4 years 3 months and 7 days, the spider has got smarter.Convert
Havn't checked it recently but wouldn't surprise me if they fixed it meanwhile.Sample
S
21

Yes easy.

wget --spider www.bluespark.co.nz

That will give you

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
Swett answered 7/6, 2011 at 12:9 Comment(1)
need to store success & fail & proceed further based on thatPlatitudinize
J
18

You can use the following option to check for the files:

wget --delete-after URL
Jackie answered 7/6, 2011 at 12:0 Comment(1)
This will still download the fileUnpromising
L
1

Yes, to use the wget to check , but not download the target URL/file, just run:

wget --spider -S www.example.com
Leinster answered 14/2, 2022 at 13:21 Comment(0)
D
-6

If you are in a directory where only root have access to write in system. Then you can directly use wget www.example.com/wget-test using a standard user account. So it will hit the url but because of having no write permission file won't be saved.. This method is working fine for me as i am using this method for a cronjob. Thanks.

sthx

Dora answered 25/7, 2018 at 11:26 Comment(1)
Shouldn't be used... Risky because permissions from system admin can change and break your intention and useless when there's a built-in flag like --spider which does exactly what the OP asksArchaism

© 2022 - 2024 — McMap. All rights reserved.