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

LinuxcURLコマンドの15以上の例

このチュートリアルでは、LinuxでのcURLコマンドについて説明します。この強力なユーティリティの機能と、その機能をすべて理解するのに役立つ例を紹介します。

cURLコマンドを使用して、サポートされている20以上のプロトコルの1つを使用して、サーバーにデータをダウンロードまたはアップロードできます。このデータは、ファイル、電子メールメッセージ、またはWebページである可能性があります。

cURLコマンドとは何ですか?

cURLは、WebサイトまたはAPIと対話し、要求を送信し、端末への応答を表示したり、データをファイルに記録したりするための理想的なツールです。より大きなスクリプトの一部として使用し、さらに処理するためにデータを他の関数に渡す場合があります。

cURLの主な用途は、サーバーからファイルを取得/ダウンロードすることです。この機能はうまく機能しますが、そのジョブにはwgetコマンドの方が適している場合があります。

この記事の後半で、wgetとcURLの相違点と類似点について説明します。

以下のセクションでcURLの使用方法を説明します。

ファイルをダウンロード

cURLに与えることができる最も基本的なコマンドは、Webサイトまたはファイルをダウンロードすることです。別のプロトコルを指定しない限り、cURLはデフォルトのプロトコルとしてHTTPを使用します。 Webサイトをダウンロードするには、次のコマンドを発行するだけです:

$ curl http://www.google.com

もちろん、取得したいWebサイトまたはページを入力してください。

このような基本的なコマンドを追加のオプションなしで実行すると、提供したページのソースコードを取得するようにcURLに指示するだけなので、ほとんど役に立ちません。

コマンドを実行すると、端末にはHTMLやその他のWebスクリプトコードが入力されます。このフォームで特に役立つものではありません。

代わりに、WebサイトをHTMLドキュメントとしてダウンロードして、コンテンツを表示できるようにします。これを実現するには、–outputオプションをcURLに追加します。

$ curl www.likegeeks.com --output likegeeks.html

これで、ダウンロードしたWebサイトを開いて、Webブラウザに表示できます。

オンラインファイルをダウンロードする場合、コマンドはほぼ同じです。ただし、上記の例で行ったように、必ず–outputオプションをcURLに追加してください。

そうしないと、cURLはオンラインファイルのバイナリ出力を端末に送信します。これにより、端末が誤動作する可能性があります。

500KBのWord文書のダウンロードを開始すると次のようになります。

ドキュメントという単語のダウンロードが開始され、ターミナルでのダウンロードの進行状況が表示されます。ダウンロードが完了すると、ファイルは保存したディレクトリで利用できるようになります。

この例では、ディレクトリを指定しなかったため、ファイルは現在の作業ディレクトリ(cURLコマンドを実行したディレクトリ)に保存されました。

また、cURLコマンドで指定した-Lオプションに気づきましたか?このファイルをダウンロードするために必要でした。次のセクションでその機能について説明します。

リダイレクトに従う

WebサイトをcURLしようとしたときに空の出力が表示される場合は、WebサイトがcURLに別のURLにリダイレクトするように指示したことを意味している可能性があります。デフォルトでは、cURLはリダイレクトに従いませんが、-Lスイッチを使用してリダイレクトすることができます。

$ curl -L www.likegeeks.com

この記事の調査では、大多数のWebサイトで-Lを指定する必要があることがわかったので、この小さなトリックを覚えておいてください。デフォルトでcURLコマンドの大部分に追加することもできます。

ダウンロードを停止して再開します

ダウンロードが中断された場合、または大きなファイルをダウンロードする必要があるが、すべてを1つのセッションで実行したくない場合は、cURLに転送を停止して再開するオプションがあります。

転送を手動で停止するには、ctrl + cの組み合わせを使用して、ターミナルで現在実行されているほとんどすべてのプロセスを停止するのと同じ方法でcURLプロセスを終了できます。

ダウンロードは開始されましたが、ctrl + cで中断されました。次に、次の構文でダウンロードを再開しましょう。

$ curl -C - example.com/some-file.zip --output MyFile.zip

-Cスイッチはファイル転送を再開するものですが、その直後にダッシュ(-)があることにも注意してください。これにより、cURLはファイル転送を再開しますが、ダウンロードされた最後のバイトを確認して再開する場所を決定するために、最初にダウンロード済みの部分を確認するように指示されます。

ファイル転送が再開され、ダウンロードが正常に完了しました。

タイムアウトを指定

cURLが一定時間後に実行を中止するようにしたい場合は、コマンドでタイムアウトを指定できます。これは、cURLの一部の操作にはデフォルトでタイムアウトがないため、特に便利です。そのため、無期限にハングアップしたくない場合は、タイムアウトを指定する必要があります。

-mスイッチを使用して、コマンドの実行に費やす最大時間を指定できます。指定された時間が経過すると、ファイルのダウンロードまたはアップロードの途中であっても、cURLは実行中の処理をすべて終了します。

cURLは、最大時間が秒単位で指定されることを想定しています。したがって、1分後にタイムアウトするには、コマンドは次のようになります。

$ curl -m 60 example.com

cURLで指定できる別のタイプのタイムアウトは、接続に費やす時間です。これにより、cURLが、オフラインまたはその他の方法で到達できないホストへの接続に不当な時間を費やさないようにすることができます。

引数として秒を受け入れます:

$ curl --connect-timeout 60 example.com

ユーザー名とパスワードの使用

-uスイッチを使用して、cURLコマンドでユーザー名とパスワードを指定できます。たとえば、FTPサーバーで認証する場合、構文は次のようになります。

$ curl -u username:password ftp://example.com

これはどのプロトコルでも使用できますが、FTPはこのような単純なファイル転送に頻繁に使用されます。

上のスクリーンショットに表示されているファイルをダウンロードする場合は、同じコマンドを発行しますが、ファイルへのフルパスを使用します。

$ curl -u username:password ftp://example.com/readme.txt

プロキシを使用する

ホストに接続する前に、プロキシを使用するようにcURLに指示するのは簡単です。特に指定しない限り、cURLはデフォルトでHTTPプロキシを想定します。

-xスイッチを使用してプロキシを定義します。この例ではプロトコルが指定されていないため、cURLはそれがHTTPプロキシであると想定します。

$ curl -x 192.168.1.1:8080 http://example.com

このコマンドは、example.comに接続するためのプロキシとしてポート8080の192.168.1.1を使用します。

他のプロトコルでも使用できます。これは、HTTPプロキシを使用してFTPサーバーにcURLを送信し、ファイルを取得する場合の例です。

$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt

cURLは、他の多くのタイプのプロキシとそれらのプロキシで使用するオプションをサポートしていますが、さらに拡張することは、このガイドの範囲を超えています。プロキシトンネリング、SOCKSプロキシ、認証などの詳細については、cURLのmanページを確認してください。

チャンクダウンロードの大きなファイル

ファイル転送を停止および再開する方法についてはすでに説明しましたが、cURLでファイルのチャンクのみをダウンロードしたい場合はどうでしょうか。そうすれば、大きなファイルを複数のチャンクでダウンロードできます。

ダウンロードの上限などを下回る必要がある場合に備えて、ファイルの特定の部分のみをダウンロードすることができます。これを実現するには、–rangeフラグを使用できます。

サイズはバイト単位で書き込む必要があります。したがって、最新のUbuntu.isoファイルを100MBのチャンクでダウンロードする場合、最初のコマンドは次のようになります。

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1

2番目のコマンドは、次のバイトを取得して、さらに100MBのチャンクをダウンロードする必要があります。

$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2

cURLがすべてのチャンクをダウンロードするまで、このプロセスを繰り返します。最後のステップは、チャンクを1つのファイルに結合することです。これは、catコマンドで実行できます。

$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso

クライアント証明書

基本認証の代わりに証明書認証を使用してサーバーにアクセスするには、–certオプションを使用して証明書ファイルを指定できます。

$ curl --cert path/to/cert.crt:password ftp://example.com

cURLには、証明書ファイルの形式に関する多くのオプションがあります。

証明書に関連するオプションも他にもあります:–cacert、–cert-status、–cert-typeなど。オプションの完全なリストについては、manページを確認してください。

サイレントcURL

cURLの進行状況メーターとエラーメッセージを抑制したい場合は、-sスイッチがその機能を提供します。要求したデータは引き続き出力されるため、コマンドを100%サイレントにする場合は、出力をファイルに送信する必要があります。

このコマンドを-Oフラグと組み合わせて、現在の作業ディレクトリにファイルを保存します。これにより、cURLが0の出力で返されるようになります。

$ curl -s -O http://example.com

または、–outputオプションを使用して、ファイルを保存する場所を選択し、名前を指定することもできます。

$ curl -s http://example.com --output index.html

ヘッダーを取得

リモートアドレスのヘッダーを取得するのはcURLを使用すると非常に簡単で、-Iオプションを使用するだけです。

$ curl -I example.com

これを–Lオプションと組み合わせると、cURLはリダイレクト先のすべてのアドレスのヘッダーを返します。

$ curl -I -L example.com

複数のヘッダー

-Hオプションを使用して、ヘッダーをcURLに渡すことができます。また、複数のヘッダーを渡すには、-Hオプションを複数回使用する必要があります。次に例を示します:

$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com

投稿(アップロード)ファイル

POSTは、Webサイトがデータを受け入れるための一般的な方法です。たとえば、オンラインでフォームに入力する場合、POSTメソッドを使用してブラウザからデータが送信されている可能性があります。この方法でデータをWebサイトに送信するには、-dオプションを使用します。

$ curl -d 'name=geek&location=usa' http://example.com

テキストではなくファイルをアップロードする場合、構文は次のようになります。

$ curl -d @filename http://example.com

アップロードしようとしているすべての異なるデータまたはファイル名を指定するには、必要な数の-dフラグを使用します。

FTPサーバーにファイルをアップロードする場合は、-Tオプションを使用できます。

$ curl -T myfile.txt ftp://example.com/some/directory/

メールを送信

電子メールの送信とは、コンピューター(または別のデバイス)から電子メールサーバーにデータをアップロードすることです。 cURLはデータをアップロードできるため、これを使用してメールを送信できます。多数のオプションがありますが、SMTPサーバーを介してメールを送信する方法の例を次に示します。

$ curl smtp://mail.example.com --mail-from [email protected] --mail-rcpt [email protected] --upload-file email.txt

メールファイルを正しくフォーマットする必要があります。このようなもの:

$ cat email.txt

From: Web Administrator <[email protected]>

To: John Doe <[email protected]>

Subject: An example email

Date: Sat, 7 Dec 2019 02:10:15




John,

Hope you have a great weekend.

-Admin

いつものように、よりきめ細かく専門的なオプションは、cURLのマニュアルページにあります。

メールメッセージを読む

cURLはIMAP(およびIMAPS)とPOP3をサポートしており、両方を使用してメールサーバーからメールメッセージを取得できます。

次のようにIMAPを使用してログインします:

$ curl -u username:password imap://mail.example.com

このコマンドは、使用可能なメールボックスを一覧表示しますが、特定のメッセージは表示しません。これを行うには、–Xオプションを使用してメッセージのUIDを指定します。

$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'

cURLとwgetの違い

cURLとwgetはどちらもサーバーからデータを取得できるため、混同されることがあります。しかし、これが彼らに共通している唯一のものです。

この記事では、cURLの機能について説明しました。 wgetは異なる関数のセットを提供します。 wgetは、Webサイトをダウンロードするための最良のツールであり、ディレクトリとリンクを再帰的にトラバースしてサイト全体をダウンロードすることができます。

Webサイトのダウンロードには、wgetを使用します。 HTTPまたはHTTPS以外のプロトコルを使用する場合、またはファイルをアップロードする場合は、cURLを使用します。 cURLは、Webから個々のファイルをダウンロードするための優れたオプションでもありますが、wgetでもそれは問題ありません。

チュートリアルがお役に立てば幸いです。戻ってきてください。


Linux
  1. 初心者向けのLinuxkillallコマンド(8例)

  2. yumupdateコマンドの15以上の例

  3. 7 Linux df コマンドの例

  1. Linuxユーザー向けの12のIPコマンド例

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

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

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

  2. 初心者向けのLinuxdirコマンド(10例)

  3. 初心者向けのLinuxrmコマンドの説明(8例)