curl multiple urls

表題の件について。`curl`の`man`を見ていて初めて知ったのでメモ。

■ 環境

  • Linux
  • Mac OSX El Capitan

■ curl

`man`に下記のような記載がある。

You can specify multiple URLs or parts of URLs by writing part sets within braces as in:

    http://site.{one,two,three}.com

        or you can get sequences of alphanumeric series by using [] as in:

    ftp://ftp.numericals.com/file[1-100].txt
  :

こういった書き方もできるのか、というのを初めて知ったので試してみた。対象はDockerでApacheを起動した。

$ docker run -dti --rm --name httpd -p 10080:80 httpd

アクセスログを見る。

$ docker logs -f httpd
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Thu Aug 24 05:37:15.553779 2017] [mpm_event:notice] [pid 1:tid 139880451094400] AH00489: Apache/2.4.27 (Unix) configured -- resuming normal operations
[Thu Aug 24 05:37:15.553906 2017] [core:notice] [pid 1:tid 139880451094400] AH00094: Command line: 'httpd -D FOREGROUND'

では実際に`curl`でアクセスしてみる。

まずは何も指定しない。

$ curl localhost:10080

この時のアクセスログは下記の通り。

172.17.0.1 - - [24/Aug/2017:10:07:30 +0000] "GET / HTTP/1.1" 200 45

1つ目の”{}“を使った方法を試してみる。

$ curl localhost:10080/{a,b,c}.html

アクセスログは下記の通りになった。

172.17.0.1 - - [24/Aug/2017:10:08:05 +0000] "GET /a.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:05 +0000] "GET /b.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:05 +0000] "GET /c.html HTTP/1.1" 404 204

また、”[]“で数値の範囲指定も可能である。

$ curl localhost:10080/[1-15].html

アクセスログは下記の通り。

172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /1.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /2.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /3.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /4.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /5.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /6.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /7.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /8.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /9.html HTTP/1.1" 404 204
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /10.html HTTP/1.1" 404 205
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /11.html HTTP/1.1" 404 205
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /12.html HTTP/1.1" 404 205
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /13.html HTTP/1.1" 404 205
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /14.html HTTP/1.1" 404 205
172.17.0.1 - - [24/Aug/2017:10:08:58 +0000] "GET /15.html HTTP/1.1" 404 205

知らなかったので便利に使えそうである。

以上。