UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【cURL】HTTPステータスコードだけを取得する

あるページのステータスコードが知りたく、手軽にcURLを使ってステータスコードだけを抽出することがしたい

curl -LI example.com -o /dev/null -w '%{http_code}\n' -s
option 概要
-L リダイレクトの遷移を追えるようにする
-I HTTPレスポンスヘッダーの取得
-o レスポンスボディの出力先を/dev/null
-w レスポンスヘッダの必要な物を取得する

出力は改行されないので\nをいれるとよいらしい

-wで取得できる他の項目は--manualで知ることができる

$ curl --manual
...
-w, --write-out <format>
              Make curl display information on stdout after a completed trans-
              fer. The format is a string that may contain  plain  text  mixed
              with  any  number of variables. The format can be specified as a
              literal "string", or you can have curl read the  format  from  a
              file  with  "@filename" and to tell curl to read the format from
              stdin you write "@-".

              The variables present in the output format will  be  substituted
              by  the  value or text that curl thinks fit, as described below.
              All variables are specified as %{variable_name} and to output  a
              normal  % you just write them as %%. You can output a newline by
              using \n, a carriage return with \r and a tab space with \t.

              The output will be written to standard output, but this  can  be
              switched to standard error by using %{stderr}.

              NOTE: The %-symbol is a special symbol in the win32-environment,
              where all occurrences of % must be doubled when using  this  op-
              tion.

              The variables available are:

              content_type   The  Content-Type  of  the requested document, if
                             there was any.

              filename_effective
                             The ultimate filename that curl  writes  out  to.
                             This  is only meaningful if curl is told to write
                             to a file  with  the  -O,  --remote-name  or  -o,
                             --output  option. It's most useful in combination
                             with the -J, --remote-header-name option.  (Added
                             in 7.26.0)

              ftp_entry_path The initial path curl ended up in when logging on
                             to the remote FTP server. (Added in 7.15.4)

              http_code      The numerical response code that was found in the
                             last  retrieved  HTTP(S)  or  FTP(s) transfer. In
                             7.18.2 the alias response_code was added to  show
                             the same info.

              http_connect   The numerical code that was found in the last re-
                             sponse (from a proxy) to a curl CONNECT  request.
                             (Added in 7.12.4)

              http_version   The  http  version  that  was  effectively  used.
                             (Added in 7.50.0)

              local_ip       The IP address of the local end of the  most  re-
                             cently  done  connection  - can be either IPv4 or
                             IPv6 (Added in 7.29.0)

              local_port     The local port number of the most  recently  done
                             connection (Added in 7.29.0)

              num_connects   Number  of new connects made in the recent trans-
                             fer. (Added in 7.12.3)

              num_redirects  Number of redirects that were followed in the re-
                             quest. (Added in 7.12.3)

              proxy_ssl_verify_result
                             The result of the HTTPS proxy's SSL peer certifi-
                             cate verification that was requested. 0 means the
                             verification was successful. (Added in 7.52.0)

              redirect_url   When an HTTP request was made without -L, --loca-
                             tion to follow redirects (or when --max-redir  is
                             met),  this  variable  will show the actual URL a
                             redirect would have gone to. (Added in 7.18.2)

              remote_ip      The remote IP address of the most  recently  done
                             connection - can be either IPv4 or IPv6 (Added in
                             7.29.0)

              remote_port    The remote port number of the most recently  done
                             connection (Added in 7.29.0)

              scheme         The  URL  scheme (sometimes called protocol) that
                             was effectively used (Added in 7.52.0)

              size_download  The total amount of bytes that were downloaded.

              size_header    The total amount of bytes of the downloaded head-
                             ers.

              size_request   The  total  amount of bytes that were sent in the
                             HTTP request.

              size_upload    The total amount of bytes that were uploaded.

              speed_download The average download speed that curl measured for
                             the complete download. Bytes per second.

              speed_upload   The  average  upload speed that curl measured for
                             the complete upload. Bytes per second.

              ssl_verify_result
                             The result of the SSL peer certificate  verifica-
                             tion that was requested. 0 means the verification
                             was successful. (Added in 7.19.0)

              stderr         From this point on, the  -w,  --write-out  output
                             will  be  written  to  standard  error. (Added in
                             7.63.0)

              stdout         From this point on, the  -w,  --write-out  output
                             will  be written to standard output.  This is the
                             default, but can be used  to  switch  back  after
                             switching to stderr.  (Added in 7.63.0)

              time_appconnect
                             The  time, in seconds, it took from the start un-
                             til the SSL/SSH/etc connect/handshake to the  re-
                             mote host was completed. (Added in 7.19.0)

              time_connect   The  time, in seconds, it took from the start un-
                             til the TCP connect to the remote host (or proxy)
                             was completed.

              time_namelookup
                             The  time, in seconds, it took from the start un-
                             til the name resolving was completed.

              time_pretransfer
                             The time, in seconds, it took from the start  un-
                             til  the  file  transfer was just about to begin.
                             This includes all pre-transfer commands and nego-
                             tiations that are specific to the particular pro-
                             tocol(s) involved.

              time_redirect  The time, in seconds, it took for all redirection
                             steps including name lookup, connect, pretransfer
                             and transfer before  the  final  transaction  was
                             started.  time_redirect shows the complete execu-
                             tion time for multiple  redirections.  (Added  in
                             7.12.3)

              time_starttransfer
                             The  time, in seconds, it took from the start un-
                             til the first byte was just about  to  be  trans-
                             ferred.  This  includes time_pretransfer and also
                             the time the server needed to calculate  the  re-
                             sult.

              time_total     The  total time, in seconds, that the full opera-
                             tion lasted.

              url_effective  The URL that was fetched last. This is most mean-
                             ingful  if  you've  told curl to follow location:
                             headers.

              If this option is used several times, the last one will be used.
...