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

実際に最も広く使用され、人気のあるcURLコマンド

cURLは、「Client for URLs」の略で、さまざまなプロトコルを使用してデータを転送するためのコマンドラインツールです。この記事は、広く使用されている便利なリファレンスとして使用できるコマンドを提供することを目的としています。

目次

  • 単一のファイルをダウンロードする
  • cURL出力をファイルに保存する
  • プログレスバーを非表示にする
  • 一度に複数のファイルを取得する
  • -Lオプションを使用してHTTPロケーションヘッダーをフォローする
  • 以前のダウンロードを続行/再開
  • 認証の有無にかかわらずプロキシを使用する
  • HTTPヘッダーのクエリ
  • FTPサーバーへのファイルのアップロード
  • FTPサーバーからファイルをダウンロード
  • 範囲を使用したリスト/ダウンロード
  • 詳細とトレースオプションを使用した詳細情報
  • SMTPプロトコルを使用してメールを送信する
  • HTTP/2サポートチェック
  • HTTPメソッドをシミュレートする
  • パラメータを使用してPOSTリクエストを作成する
  • 結論

curlを呼び出すことができます ほとんどのLinuxベースのオペレーティングシステムにプリインストールされているため、インストール方法を考えずにターミナルからコマンドを実行できます。

カールには、次のような膨大な数のユースケースがあります。

  • FTPアップロード
  • プロキシサポート
  • SSL接続
  • HTTP投稿

cURLは、次のすべてのプロトコルの使用もサポートします:DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMB、SMBS、SMTP 、SMTPS、TELNET、およびTFTP。

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

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

curl https://www.gnu.org

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

curl https://www.gnu.org > gnu-org.html

cURL出力をファイルに保存

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

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

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

cURL -Oを使用する場合 、ローカルマシンの「gettext.html」という名前のファイル自体にコンテンツを保存します。

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

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

プログレスバーを非表示

デフォルトでは、cURLはプログレスバーを表示します。非表示にするには-s-サイレント )オプションを使用できます。

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

何らかの理由でプラットフォームで機能しない場合は、いつでもstderrを / dev / nullにリダイレクトできます。 :

curl -O http://www.gnu.org/software/gettext/manual/gettext.html 2>/dev/null
一度に複数のファイルを取得する

もちろん、コマンドラインでURLを指定することで、1回のショットで複数のファイルをダウンロードできます。

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

-Lオプションを使用してHTTPロケーションヘッダーをフォローする

ただし、デフォルトでは、cURLはHTTPロケーションヘッダーに従いません。リダイレクトとも呼ばれます。リクエストされたウェブページが別の場所に移動されると、HTTPロケーションヘッダーがレスポンスとして送信され、実際のウェブページが配置されている場所が示されます。

-L を使用して、リダイレクトに従うようにcURLを要求できます。 以下に示すように、オプション。

curl -L https://www.google.com
前のダウンロードを続行/再開

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

-C-と言えば 、次にcURLは、ダウンロードの再開を開始する場所を見つけます。オフセット-Cを指定することもできます 。指定されたオフセットバイトは、ソースファイルの最初からスキップされます。

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

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

curl-C-を使用する 、以前に中断したところからダウンロードを続行できます。

curl -C - -O https://www.gnu.org/software/gettext/manual/gettext.html
認証の有無にかかわらずプロキシを使用する

proxy.yourdomain.comのポート8080でリッスンしているプロキシサーバーの背後にいる場合は、次のようにします。

curl -x proxy.yourdomain.com:8080 -U user:password -O https://www.gnu.org/software/gettext/manual/gettext.html 

-U user:passwordをスキップできる場所 プロキシが認証を必要としない場合。

クエリHTTPヘッダー

HTTPヘッダーを使用すると、リモートウェブサーバーは実際のリクエストとともに自身に関する追加情報を送信できます。さらに、これにより、リクエストの処理方法に関する詳細がクライアントに提供されます。

WebサイトからHTTPヘッダーを照会するには、次のようにします。

curl -I https://www.gnu.org
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 21:22:32 GMT
Server: Apache/2.4.7
Content-Location: home.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 13 Jul 2020 21:22:32 GMT
Content-Type: text/html
Content-Language: en

FTPサーバーへのファイルのアップロード

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

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

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

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

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

curl -u ftpuser:ftppass -T - ftp://ftp.server.com/mynewfile.txt

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

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

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

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

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

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

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

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

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

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

curl http://ftp.us.debian.org/debian/pool/main/[a-z]/

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

詳細情報VerboseandTraceOptionを使用

-vを使用して何が起こっているかを知ることができます オプション。このオプションは詳細モードを有効にし、詳細を出力します。

curl -v https://www.gnu.org

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

*   Trying 209.51.188.148:443...
* Connected to www.gnu.org (209.51.188.148) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=emacs.org
*  start date: Jun 17 09:07:40 2020 GMT
*  expire date: Sep 15 09:07:40 2020 GMT
*  subjectAltName: host "www.gnu.org" matched cert's "www.gnu.org"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
> GET / HTTP/1.1
> Host: www.gnu.org
> User-Agent: curl/7.71.1
> Accept: */*
> 
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 13 Jul 2020 21:56:04 GMT
< Server: Apache/2.4.7
< Content-Location: home.html
< Vary: negotiate,accept-language,Accept-Encoding
< TCN: choice
< Strict-Transport-Security: max-age=63072000
< Access-Control-Allow-Origin: (null)
< Accept-Ranges: bytes
< Cache-Control: max-age=0
< Expires: Mon, 13 Jul 2020 21:56:04 GMT
< Transfer-Encoding: chunked
< Content-Type: text/html
< Content-Language: en
< 
...

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

cURLは、SMTPプロトコルを使用してメールを送信するためにも使用できます。以下に示すように、from-address、to-address、およびmailserverip-addressを指定する必要があります。

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

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

HTTP/2サポートチェック

最新のcURLリリースを使用している場合は、-http2を使用できます。 特定のURLが新しいHTTP/2プロトコルをサポートしているかどうかを確認するオプション。したがって、サイトがHTTP / 2をサポートしている場合は、 HTTP / 2.0 200が表示されます。 HTTP / 1.1 200の代わりにヘッダーに 。

curl -I --http2 https://www.opensource.com

HTTPメソッドをシミュレートする

GET メソッドは、特定のURLからリソースを取得するために使用されます。シンプルなcurlhttps://www.gnu.org/ コマンドはGETを使用します デフォルトのHTTPメソッドとして使用できますが、-request GETを使用して指定することもできます。 または-XGET

curl --request GET https://www.gnu.org

POST メソッドは、情報をWebサーバーに投稿するために使用されます(フォーラムへのコメントなど)。これは、-request POSTを使用して指定できます または-XPOST

curl --request POST https://yourwebsite.com

DELETE メソッドは、特定のURLに関連付けられたWebサーバーからリソースを削除します。これは、-request DELETEを使用して指定できます または-XDELETE

curl --request DELETE https://yourwebsite.com

PUT メソッドは、クライアントがWebサーバーに送信するデータに基づいてリソースを作成または置換します。 (例:新しいWebページの作成または既存のWebページの更新)。これは、-request PUTを使用して指定できます または-XPUT

curl --request PUT https://yourwebsite.com
パラメータを使用してPOSTリクエストを作成する

次のコマンドは、 animal1を送信します およびanimal2 パラメータとそれに対応する値をhttps://yourdomain.com/animals.php

curl --request POST --data "animal1=cat&animal2=dog" https://yourdomain.com/animals.php

このヒントを使用して、通常のHTMLフォームの動作をシミュレートできます。

結論

この投稿では、cURLとはについて説明しました そして、いくつかの基本的なコマンドで何ができるか。 cURLの詳細については、プロジェクトのウェブサイトにアクセスしてください。


Linux
  1. Linuxコマンド-概要と例

  2. 頻繁に使用される40の基本的なLinuxコマンド

  3. Linux用の10の最も人気のあるアイコンテーマ

  1. 最もよく使用される7つのLinux名前空間

  2. Linuxシステムで最も役立つNginxコマンド

  3. [Linux]:最も頻繁に使用される15のYUMコマンドと例

  1. 2022年に最も人気のある侵入テストツール

  2. Linuxのrebootおよびshutdownコマンド

  3. Subversion チュートリアル:最もよく使用される 10 の SVN コマンドと例