GNU/Linux >> Linux の 問題 >  >> Linux

15 実用的な Linux cURL コマンドの例 (cURL のダウンロード例)

cURL は、コマンド ライン ツールと、URL 構文を使用してデータを転送するためのライブラリで構成されるソフトウェア パッケージです。

cURL は、DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、Telnet、TFTP などのさまざまなプロトコルをサポートしています。

この記事では、15 の実用的な cURL の使用例を紹介します。

1.単一のファイルをダウンロード

次のコマンドは、URL のコンテンツを取得し、それを STDOUT (つまり、端末) に表示します。

$ curl http://www.centos.org

出力をファイルに保存するには、以下に示すようにリダイレクトします。これにより、追加のダウンロード統計も表示されます。

$ curl http://www.centos.org > centos-org.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 27329    0 27329    0     0   104k      0 --:--:-- --:--:-- --:--:--  167k

2. cURL 出力をファイルに保存

-o/-O オプションを使用して、curl コマンドの結果をファイルに保存できます。

  • -o (小文字の o) 結果はコマンドラインで指定されたファイル名で保存されます
  • -O (大文字の O) URL のファイル名が取得され、結果を保存するファイル名として使用されます
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

これで、ページ gettext.html が「mygettext.html」という名前のファイルに保存されます。 -o オプションを指定して curl を実行すると、次のようにダウンロードの進行状況メーターが表示されることにも注意してください。

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 66 1215k   66  805k    0     0  33060      0  0:00:37  0:00:24  0:00:13 45900
100 1215k  100 1215k    0     0  39474      0  0:00:31  0:00:31 --:--:-- 68987

curl -O (大文字の O) を使用すると、ローカル マシンの「gettext.html」という名前のファイル自体にコンテンツが保存されます。

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html

注:curl が端末にデータを書き込む必要がある場合は、印刷時の混乱を避けるために進行状況メーターを無効にします。 '>'|'-o'|'-O' オプションを使用して、結果をファイルに移動できます。

cURL と同様に、wget を使用してファイルをダウンロードすることもできます。 wget の例を参照して、wget を効果的に使用する方法を理解してください。

3.一度に複数のファイルを取得

コマンドラインで URL を指定することにより、複数のファイルを一度にダウンロードできます。
構文:

$ curl -O URL1 -O URL2

以下のコマンドは、index.html と gettext.html の両方をダウンロードし、現在のディレクトリの下に同じ名前で保存します。

$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

上記のように同じサーバーから複数のファイルをダウンロードすると、curl は接続を再利用しようとすることに注意してください。

4. -L オプションを使用して HTTP Location ヘッダーを追跡する

デフォルトでは、CURL は HTTP Location ヘッダーに従いません。リダイレクトとも呼ばれます。要求された Web ページが別の場所に移動されると、HTTP Location ヘッダーが応答として送信され、実際の Web ページが配置されている場所が示されます。

たとえば、誰かがインドからブラウザーに google.com と入力すると、自動的に「google.co.in」にリダイレクトされます。これは、以下に示すように HTTP Location ヘッダーに基づいて行われます。

$ curl http://www.google.com

<TITLE>302 Moved</TITLE>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.co.in/">here</A>

上記の出力は、要求されたドキュメントが「http://www.google.co.in/」に移動されたことを示しています。

以下に示すように、-L オプションを使用してリダイレクトに従うように curl を強制できます。これで、google.co.in の html ソース コードがダウンロードされます。

$ curl -L http://www.google.com

5.以前のダウンロードの続行/再開

curl -C オプションを使用すると、何らかの理由で停止したダウンロードを続行できます。これは、大きなファイルをダウンロードし、ダウンロードが中断された場合に役立ちます。

「-C -」と指定すると、curl はどこからダウンロードを再開するかを見つけます。オフセット「-C 」を指定することもできます。指定されたオフセット バイトは、ソース ファイルの先頭からスキップされます。

curl を使用して大きなダウンロードを開始し、ダウンロードの合間に Ctrl-C を押して停止します。

$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html
##############             20.1%

注:-# は、進行状況メーターの代わりに進行状況バーを表示するために使用されます。

現在、上記のダウンロードは 20.1% で停止しています。 「curl -C -」を使用すると、ダウンロードを中断したところから続行できます。現在、ダウンロードは 20.1% から継続しています。

curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
###############            21.1%

6.データ転送速度を制限

–limit-rate オプションを使用して、データが転送される量を制限できます。引数として最大転送速度を指定できます。

$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

上記のコマンドは、データ転送を 1000 バイト/秒に制限しています。 curl は、短期間により高い転送速度を使用する場合があります。しかし平均すると、1 秒あたり 1000B 程度になります。

以下は、上記のコマンドの進行状況メーターです。現在の速度が 1000 バイトに近いことがわかります。

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  1 1215k    1 13601    0     0    957      0  0:21:40  0:00:14  0:21:26   999
  1 1215k    1 14601    0     0    960      0  0:21:36  0:00:15  0:21:21   999
  1 1215k    1 15601    0     0    962      0  0:21:34  0:00:16  0:21:18   999

7.指定された時間の前後に変更された場合にのみファイルをダウンロードします

curl で -z オプションを使用して、特定の時間後に変更されたファイルを取得できます。これは FTP と HTTP の両方で機能します。

$ curl -z 21-Dec-11 http://www.example.com/yy.html

上記のコマンドは、指定された日時以降に変更された場合にのみ yy.html をダウンロードします

$ curl -z -21-Dec-11 http://www.example.com/yy.html

上記のコマンドは、指定された日時より前に変更された場合、yy.html をダウンロードします。

日付式でサポートされているさまざまな構文については、「man curl_getdate」を参照してください

8. cURL で HTTP 認証を渡す

Web サイトでは、コンテンツを表示するためにユーザー名とパスワードが必要になる場合があります (.htaccess ファイルで実行できます)。 -u オプションを使用すると、以下に示すように、これらの資格情報を cURL から Web サーバーに渡すことができます。

$ curl -u username:password URL

注:デフォルトでは、curl は基本 HTTP 認証を使用します。 –ntlm | を使用して、他の認証方法を指定できます。 –ダイジェスト。

9. FTP サーバーからファイルをダウンロード

cURL を使用して、FTP サーバーからファイルをダウンロードすることもできます。指定された FTP パスがディレクトリの場合、デフォルトでは、特定のディレクトリの下にあるファイルが一覧表示されます。

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

上記のコマンドは、xss.php ファイルを ftp サーバーからダウンロードし、ローカル ディレクトリに保存します。

$ curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

ここで、指定された URL はディレクトリを参照します。したがって、cURL は、指定された URL の下にあるすべてのファイルとディレクトリを一覧表示します

FTP/sFTP を初めて使用する場合は、初心者向けの ftp sftp チュートリアルを参照してください。

10.範囲を使用してリスト/ダウンロード

cURL は、URL で指定される範囲をサポートしています。範囲を指定すると、範囲内で一致するファイルがダウンロードされます。 FTP ミラー サイトからパッケージをダウンロードすると便利です。

$ curl   ftp://ftp.uk.debian.org/debian/pool/main/[a-z]/

上記のコマンドは、ターミナルの a-z 範囲からすべてのパッケージを一覧表示します。

11.ファイルを FTP サーバーにアップロード

Curl は、-T オプションを使用してファイルを FTP サーバーにアップロードするためにも使用できます。

$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

上記のコマンドは、myfile.txt という名前のファイルを FTP サーバーにアップロードします。範囲操作を使用して、同時に複数のファイルをアップロードすることもできます。

$ curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.testserver.com

オプションで「.」を使用できます。 STDIN から入力を取得し、リモートに転送します。

$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

上記のコマンドは、標準入力からユーザーからの入力を取得し、その内容を「myfile_1.txt」という名前で ftp サーバーに保存します。

各 URL に「-T」を 1 つ指定できます。このペアは、何をどこにアップロードするかを指定します。

12. Verbose and Trace オプションを使用した詳細情報

-v オプションを使用すると、何が起こっているかを知ることができます。 -v オプションで冗長モードを有効にすると、詳細が表示されます

curl -v http://google.co.in

about コマンドは以下を出力します

* About to connect() to www.google.co.in port 80 (#0)
*   Trying 74.125.236.56... connected
* Connected to www.google.co.in (74.125.236.56) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: www.google.co.in
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Date: Tue, 10 Apr 2012 11:18:39 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< Set-Cookie: PREF=ID=7c497a6b15cc092d:FF=0:TM=1334056719:LM=1334056719:S=UORpBwxFmTRkbXLj; expires=Thu, 10-Apr-2014 11:18:39 GMT; path=/; domain=.google.co.in
.
.

さらに詳細な情報が必要な場合は、–trace オプションを使用できます。 trace オプションは、指定されたファイルへのすべての受信/送信データの完全なトレース ダンプを有効にします

=> Send header, 169 bytes (0xa9)
0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1..
0010: 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c User-Agent: curl
..
0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1.
0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6
0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 ..Host: www.goog
0090: 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.in..Accept
00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a                      : */*....
== Info: HTTP 1.0, assume close after body
<= Recv header, 17 bytes (0x11)
0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK.
0010: 0a

この詳細およびトレース オプションは、curl が何らかの理由で失敗し、その理由がわからない場合に役立ちます。

13. DICT プロトコルを使用して単語の定義を取得

cURL を使用して、DICT プロトコルの助けを借りて単語の定義を取得できます。ディクショナリ サーバーの URL を渡す必要があります。

$ curl dict://dict.org/d:bash

上記のコマンドは、次のように bash の意味を一覧表示します

151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, v. t. [imp. & p. p. {Bashed}; p. pr. & vb. n.
   {Bashing}.] [Perh. of imitative origin; or cf. Dan. baske to
   strike, bask a blow, Sw. basa to beat, bas a beating.]
   To strike heavily; to beat; to crush. [Prov. Eng. & Scot.]
   --Hall Caine.
   [1913 Webster]

         Bash her open with a rock.               --Kipling.
   [Webster 1913 Suppl.]
.
151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48"
Bash \Bash\, n.
   1. a forceful blow, especially one that does damage to its
      target.
      [PJC]
.
.

これで、「The Collaborative International Dictionary of English」が使用されていることがわかります。多くの辞書が利用可能です。を使用してすべての辞書を一覧表示できます

$ curl dict://dict.org/show:db

jargon "The Jargon File (version 4.4.7, 29 Dec 2003)"
foldoc "The Free On-line Dictionary of Computing (26 July 2010)"
easton "Easton's 1897 Bible Dictionary"
hitchcock "Hitchcock's Bible Names Dictionary (late 1800's)"
bouvier "Bouvier's Law Dictionary, Revised 6th Ed (1856)"

コンピューターで Bash の実際の意味を見つけるために、次のように「foldoc」辞書で bash を検索できます

$ curl dict://dict.org/d:bash:foldoc

結果は、

bash

   Bourne Again SHell.  {GNU}'s {command interpreter} for {Unix}.
   Bash is a {Posix}-compatible {shell} with full {Bourne shell}
   syntax, and some {C shell} commands built in.  The Bourne
   Again Shell supports {Emacs}-style command-line editing, job
   control, functions, and on-line help.  Written by Brian Fox of
   {UCSB}.

DICT に関する詳細については、RFC2229 をお読みください

14.プロキシを使用してファイルをダウンロードする

-x オプションを使用して、プロキシを使用して特定の操作を行うように cURL を指定できます。プロキシのホストとポートを指定する必要があります。

$ curl -x proxysever.test.com:3128 http://google.co.in

15. SMTP プロトコルを使用してメールを送信

cURL は、SMTP プロトコルを使用してメールを送信するためにも使用できます。以下に示すように、送信元アドレス、宛先アドレス、およびメールサーバーの IP アドレスを指定する必要があります。

$ curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com

上記のコマンドが入力されると、ユーザーがメールにデータを提供するのを待ちます。メッセージを作成したら、次のように入力します。 (ピリオド) を最後の行として指定すると、すぐにメールが送信されます。

Subject: Testing
This is a test mail
.

Linux
  1. Linuxでのcpコマンド:7つの実用的な例

  2. Linuxシャットダウンコマンド:5つの実用的な例

  3. Linuxでのddコマンドの5つの実用例

  1. Linux curlコマンドの例–パート2

  2. Linux curlコマンドの例–パート1

  3. 10 実用的な Linux nm コマンドの例

  1. LinuxでのWgetコマンドと例

  2. LinuxでのCurlコマンドと例

  3. 初心者向けのLinuxLSコマンドの16の実用例