Using curl to make a HEAD request with a hard timeout

15,448

curl -I will generate a HEAD request.

Adding the -L option will make it follow redirects.

Timeouts can be controlled with several options depending on which bit of the request you want to time out.

From the man page:

--connect-timeout <seconds>
          Maximum time in seconds that you allow the connection to the server to take.  This only limits the connection phase, once curl has connected this option is of no more use. See also the -m/--max-time option.

    -m/--max-time <seconds>
          Maximum time in seconds that you allow the whole operation to take.  This is useful for preventing your batch jobs from hanging for hours due to slow networks or links going down.  See also the --connect-timeout option.

Another couple of timeout-related options also worth looking at are:

--retry
--retry-delay
--retry-max-time
Share:
15,448

Related videos on Youtube

AbdelKh
Author by

AbdelKh

Updated on September 18, 2022

Comments

  • AbdelKh
    AbdelKh over 1 year

    I'd like to use curl to send a HTTP HEAD request to a URL to verify that it is working correctly (server is up and sends a successful response). At the end, I need the final HTTP response code returned and URL (after following any redirects). Finally, I need to set a hard timeout (a period of time after which the call will fail, regardless of where in the request curl is).

    Does curl support all this? What options do I need to use to accomplish this?

  • AbdelKh
    AbdelKh over 12 years
    Thanks, what about retrieving the final URL and response code?
  • Ladadadada
    Ladadadada over 12 years
    The final URL will be the value of the Location: header of the previous response. The final response code is returned normally. Chaining all of these together with grep would look a bit like this: curl -s -I -L -m 4 http://example.com | grep -E "^Location|^HTTP" | tail -2. The -s option stops curl printing out the download progress. tail -2 restricts the output to just the final Location header and the final HTTP response code.