ユーザーの操作なしでファイルをアップロード・ダウンロードするcurlコマンドの使い方 - TechRepublic

ユーザーの操作なしでファイルをアップロード・ダウンロードするcurlコマンドの使い方 - TechRepublic

アフィリエイトリンクまたはスポンサーシップを通じて、ベンダーから収益を得る場合があります。これにより、サイト上の商品配置が影響を受ける可能性がありますが、レビューの内容には影響しません。詳細は利用規約をご覧ください。

ネットワーク経由でファイルをダウンロード (またはアップロード) する必要があるスクリプトの作成を検討している場合、curl コマンドは最も役立ちます。

curlコマンドは非常に便利で柔軟性に優れています。このツールの目的は、ユーザーの介入なしに、サポートされている多数のプロトコルのいずれかを使用して、サーバーとの間でデータを転送することです。curlコマンドがこれほど柔軟に対応できるのは、以下のプロトコルをサポートしているからです。

  • ディクテーション
  • ファイル
  • FTP
  • FTPS
  • ゴーファー
  • HTTP
  • HTTPS
  • IMAP
  • IMAPS
  • LDAP
  • LDAP
  • POP3
  • POP3S
  • RTMP
  • RTSP
  • SCP
  • 中小企業
  • SMBS
  • SMTP
  • SMTPS
  • テルネット
  • TFTP

可能性は実に豊富です。これは、curl がほぼあらゆる種類のデータを転送できることを意味します。URL のソースコードを表示することも可能です。これらすべてを、ユーザーによる操作なしで実行できます(これはスクリプト作成にとって非常に重要な機能です)。

このコマンド(Linuxのハウツーやスクリプトでよく見かけるコマンド)の使い方をご紹介します。ここではElementary OSでデモを行いますが、このコマンドはほぼすべてのLinuxディストリビューションで動作します。CurlはmacOSとWindowsでも利用可能です。

参照: Linux ネットワークを簡単にする 20 のクイックヒント (無料 PDF) (TechRepublic)

curlのインストール

Linuxディストリビューションにはデフォルトでcurlがインストールされているはずです。インストールされていない場合でも、インストールは非常に簡単です。Debian派生ディストリビューションでは、インストールコマンドは以下のようになります。

sudo apt install curl

curl –versionコマンドを実行すると、インストール状況を確認できます。インストールされたアプリケーションのバージョン番号が表示されます(私のElementary OSマシンでは7.47.0です)。

curlの使用

まず、curlの最もシンプルな使い方を見てみましょう。ウェブサイトのソースコードを表示したいとします。例としてcurlサイトを使用します。次のコマンドを実行します。

curl https://curl.haxx.se | less

これで、そのサイトの HTML をスクロールできるようになります (図 A )。

図A

これは、サイトがどのように作成されたかを把握したり、独自のサイトのトラブルシューティングを行うのに最適な方法です。

もちろん、この例は非常に限定的です。curl を使ってサイトからファイルをダウンロードしてみましょう。同じ例で進めましょう。例えば、curl サイトの HTML をダウンロードして後で表示したいとします。そのためには、次のように -o スイッチを使用します。

curl https://curl.haxx.se -o curl.html

上記のコマンドは、curlサイトからHTMLコードをダウンロードし、curl.htmlとして保存します。もちろん、curlはHTMLソースのダウンロードだけができるわけではありません。例えば、サイトからファイルをダウンロードしたい場合、curlは次のように処理できます。

curl http://SERVER_ADDRESS/FILENAME -o FILENAME

ここで、SERVER_ADDRESSはサーバーのURL、FILENAMEはダウンロードするファイルの名前です。例えば、Ubuntu Serverの最新リリースをダウンロードしたいとします。その場合は次のようにします。

curl http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso -o ubuntu-server-18.04.iso

そのファイルがパスワードで保護されている場合、curl は次のように処理できます。

curl -u USERNAME:PASSWORD http://SERVER_ADDRESS -o FILENAME

どこ:

  • USERNAME はサーバー上のユーザー名です。
  • PASSWORD はサーバー上のユーザーのパスワードです。
  • FILENAME はダウンロードするファイルです。
  • SERVER_ADDRESS はファイルへの直接リンクです。

curlはFTPサーバーでも使用できます。例えば、パスワード保護されたFTPサーバーからファイルをダウンロードする必要がある場合、コマンドは以下のようになります。

curl ftp://SERVER_ADDRESS/FILENAME -user USERNAME:PASSWORD -o FILENAME

どこ:

  • SERVER_ADDRESS は FTP サーバーのアドレスです。
  • FILENAME はダウンロードするファイルの名前です。
  • USERNAME は FTP サーバー上のユーザー名です。
  • PASSWORD は、FTP サーバー上のユーザーのパスワードです。

FTP サーバーにファイルをアップロードするには、コマンドは次のようになります。

curl -T FILENAME SERVER_ADDRESS -user USERNAME:PASSWORD

ここでもまた:

  • SERVER_ADDRESS は FTP サーバーのアドレスです。
  • FILENAME はダウンロードするファイルの名前です。
  • USERNAME は FTP サーバー上のユーザー名です。
  • PASSWORD は、FTP サーバー上のユーザーのパスワードです。

ある時点で、curl開発者はlibcurlからSFTPサポートを削除しました。SSH経由でファイルをダウンロードする必要がある場合は、sftpコマンドを使用する必要があります。

curlを使用する理由

curl の最大の利点の一つは、操作なしで使用できることです。そのため、スクリプト作成に最適です。Linux インストーラースクリプトでは curl が使われている例を数多く目にするでしょう。インストーラースクリプトを実行すると、curl が必要な依存関係をダウンロードする様子を目にするでしょう。そのため、Linux bash スクリプト(またはインストーラースクリプト)を作成する場合、curl は間違いなく頼りになるでしょう。curl に関する詳細情報(膨大な情報があります)は、man curl コマンドを実行してマニュアルページをご覧ください。

TechRepublic Academy で Linux について詳しく学びましょう。

以下も参照:

  • Linux の watch コマンドを使って出力の追跡を簡単にする方法 (TechRepublic)
  • Linux の screen コマンドを使用してリモートプロセスを実行し続ける方法 (TechRepublic)
  • Linux で SFTP サーバーを設定する方法 (TechRepublic)
  • Linux ログファイルをリアルタイムで監視する方法 (TechRepublic)
  • ICANN、GDPR要件に対応するためWHOISを直前に変更(ZDNet)

記事をシェア
ジャック・ウォーレンの画像

ジャック・ウォーレン

ジャック・ウォーレンは、TechRepublic、The New Stack、Linux New Mediaなどで受賞歴のあるライターです。20年以上にわたり様々なトピックを執筆し、オープンソースの熱心な推進者でもあります。ジャック・ウォーレンに関する詳細は、ウェブサイトjackwallen.comをご覧ください。

Tagged: