MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Linuxコマンド - curlのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Linuxコマンド - curl
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <code>curl</code>コマンドは、Web上のリソースにアクセスして、データの送受信を行うツールである。<br> 主に、以下に示すようなプロトコルをサポートしており、APIとの通信やWebページの取得、ファイルのアップロードおよびダウンロード等の操作が可能である。<br> * HTTP * HTTPS * FTP * SFTP <br> <code>curl</code>コマンドは、以下に示すことが可能である。<br> * Webページの取得 *: WebページのHTMLコンテンツを取得する。 * APIとの通信 *: APIに対してHTTPリクエストを送信して、データの取得や更新、削除を行う。 * ファイルのアップロード / ダウンロード *: FTP、SFTP、HTTP、HTTPS等のプロトコルを利用して、ファイルのアップロードやダウンロードを行う。 * ヘッダ情報の確認 *: WebサイトやAPIのHTTPヘッダー情報を確認する。 * 認証付きリクエスト *: Basic認証、Digest認証、トークン認証等の様々な認証方法に対応したリクエストを送信することができる。 * Webサイトの監視 *: 定期的にWebサイトやAPIにリクエストを送信して、ステータスコードや応答時間を監視することができる。 * リダイレクトの追跡 *: URLがリダイレクトされる場合、<code>curl</code>コマンドはリダイレクト先のURLや遷移を調査することができる。 * プロキシを経由したリクエスト *: プロキシサーバを経由してリクエストを送信することができる。 <br><br> == curlのインストール == 多くのLinuxディストリビューションでは、標準でcurlがインストールされている。<br> <br> ==== パッケージ管理システムからインストール ==== # RHEL sudo dnf install curl # SUSE sudo zypper install curl <br> ==== ソースコードからインストール ==== もし、別途インストールする必要がある場合、ソースコードからcurlをインストールする。<br> <br> curlのビルドに必要なライブラリをインストールする。<br> # SUSE sudo zypper install libopenssl-devel libopenssl-1_1-devel libzstd-devel c-ares-devel libpsl-devel \ libssh-devel # オプション : libSSHライブラリを使用する場合 libssh2-devel # オプション : libSSH2ライブラリを使用する場合 libnghttp2-devel # オプション : NGHTTPライブラリを使用する場合 libheimdal-devel # オプション : GSSを使用する場合 <br> [https://curl.se/download.html curlの公式Webサイト]、または、[https://github.com/curl/curl curlのGithub]にアクセスして、ソースコードをダウンロードする。<br> ダウンロードしたファイルを解凍する。<br> tar xf curl-<バージョン>.tar.xz cd curl-<バージョン> <br> curlをビルドおよびインストールする。<br> mkdir build && cd build ../configure --prefix=<curlのインストールディレクトリ> \ --with-openssl \ --with-gnutls # オプション : GNUTLSを使用する場合 --with-wolfssl # オプション : WolfSSLを使用する場合 make -j $(nproc) make install <br> ~/.profileファイル等に、環境変数<code>PATH</code>を追記する。<br> vi ~/.profile <br> # ~/.profileファイル export PATH="/<curlのインストールディレクトリ>/bin:$PATH" <br><br> == 使用方法 == ==== GETリクエストの実行 ==== curl <オプション> <URL> # 例: DuckDuckGoのトップページのHTMLを取得する場合 curl https://duckduckgo.com <br> ==== ヘッダ情報の表示 ==== ヘッダ情報だけを表示する場合は、<code>-I</code>オプションを付加する。<br> curl -I <URL> <br> ==== POSTリクエストの送信 ==== POSTリクエストを送信する場合は、以下に示す2つのオプションを付加する。<br> * <code>-X</code>オプション *: メソッドを指定(POST) * <code>-d</code>オプション *: データを指定 <br> curl -X POST -d "key=<値>" <URL> <br> ==== ファイルのアップロード ==== ファイルをアップロードする場合は、<code>-F</code>オプションを付加する。<br> curl -F "file=@<ファイルのパス>" <URL> <br> ==== ファイルのダウンロード ==== ファイルをダウンロードする場合は、<code>-o</code>オプションを付加して保存先ファイル名を指定する。<br> curl -o <出力先ファイル名> <URL> <br><br> == curlコマンドのオプション == <center> {| class="wikitable" | style="background-color:#fefefe;" |- ! style="background-color:#66CCFF;" | オプション ! style="background-color:#66CCFF;" | 説明 ! style="background-color:#66CCFF;" | 実行例 |- | -A<br>--user-agent || UAを指定する。 || curl -A "Mozilla/5.0" https://example.com |- | -b<br>--cookie || クッキーを指定する。 || curl -b "name=value" https://example.com |- | -c<br>--cookie-jar || 取得したクッキーをファイルに保存する。 || curl -c cookies.txt https://example.com |- | -d<br>--data || POSTリクエストで送信するデータを指定する。 || curl -d "data=value" https://example.com |- | -D<br>--dump-header || レスポンスヘッダをファイルに保存する。 || curl -D headers.txt https://example.com |- | -F<br>--form || フォームデータを送信する。 || curl -F "file=@file.txt" https://example.com |- | -H<br>--header || カスタムヘッダを追加する。 || curl -H "Content-Type: application/json" https://example.com |- | -I<br>--head || ヘッダ情報のみを表示する。 || curl -I https://example.com |- | -k<br>--insecure || SSL / TLS認証を無視する。 || curl -k https://example.com |- | -L<br>--location || リダイレクト先に追従する。 || curl -L https://example.com |- | -o<br>--output || 取得したデータをファイルに保存する。 || curl -o output.html https://example.com |- | -O<br>--remote-name || URLのファイル名でファイルを保存する。 || curl -O https://example.com/file.zip |- | -s<br>--silent || サイレントモードを有効にする。 || curl -s https://example.com |- | -u<br>--user || ユーザ名とパスワードを指定して認証を行う。 || curl -u username:password https://example.com |- | -x<br>--proxy || プロキシサーバを指定する。 || curl -x http://proxy.example.com:8080 https://example.com |- | -X<br>--request || HTTPメソッド(GET, POST, PUT, DELETE) || POSTリクエスト送信<br>curl -X POST -d “data=value” https://example.com<br><br> PUTリクエストの送信<br>curl -X PUT -d “data=new_value” https://example.com/resource/1<br><br> DELETEリクエストの送信<br>curl -X DELETE https://example.com/resource/1<br> |} </center> <br><br> == セキュリティと認証== ==== HTTPS ==== 証明書のエラーを無視する場合、<code>-k</code>オプションを付加する。<br> これにより、<code>curl</code>コマンドはサーバから送信される証明書を検証せずに、以下のような動作をする。<br> * 証明書エラーが発生しない。 * サーバとの通信が脆弱になる * サーバからのレスポンスが改竄されている可能性がある。 <br> ==== パスワード認証 ==== ユーザ名とパスワードを指定して認証が必要なWebサイトにアクセスする場合は、<code>-u</code>オプションを付加する。<br> curl -u <ユーザ名>:<パスワード> <URL> <br> ==== トークン認証 ==== トークン認証を使用するAPIにアクセスする場合は、ヘッダにトークンを追加してリクエストを送信する。<br> curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/data <br> ==== Basic認証 / Digest認証 ==== Basic認証およびDigest認証を使用する場合は、<code>-u</code>オプションを付加してユーザ名とパスワードを指定する。<br> また、必要に応じて<code>-basic</code>オプションや<code>-digest</code>オプションを付加する。<br> <br> # Basic認証 curl -u <ユーザ名>:<パスワード> --basic <URL> # Digest認証 curl -u <ユーザ名>:<パスワード> --digest <URL> <br> ==== SSL / TLSの設定 ==== SSL / TLSの設定をカスタマイズする場合は、以下に示すオプションを付加する。<br> * <code>-ciphers</code>オプション *: 使用する暗号スイートを指定する。 * <code>-cacert</code>オプション *: CA証明書のファイルを指定する。 * <code>-cert</code>オプション *: クライアント証明書を指定する。 * <code>-key</code>オプション *: クライアント証明書の秘密鍵を指定する。 <br> ==== プロキシの設定 ==== プロキシ経由でリクエストを送信する場合は、<code>-x</code>オプションを付加してプロキシサーバのアドレスを指定する。<br> curl -x <プロキシサーバのURL> <URL> <br><br> == ファイル転送 == ==== FTP / SFTPでのファイルアップロード ==== # FTP curl -u <ユーザ名>:<パスワード> -T <アップロードするファイル名> ftp://〜 # SFTP curl -u <ユーザ名>:<パスワード> -T <アップロードするファイル名> sftp://〜 <br> ==== FTP/SFTPでのファイルダウンロード ==== # FTPダウンロード curl -u <ユーザ名>:<パスワード> -o <保存するファイル名> ftp://〜/<ファイル名> # SFTPダウンロード curl -u <ユーザ名>:<パスワード> -o <保存するファイル名> sftp://〜/<ファイル名> <br> ==== 一括ダウンロード ==== 複数のファイルを一括でダウンロードする場合は、<code>-O</code>オプションを付加して、複数のURLを指定する。<br> curl -O https://〜/<ファイル名> -O https://〜/<ファイル名> <br><br> == タイムアウトの設定 == リクエストのタイムアウトを設定する場合は、<code>-m</code>オプションを付加して、秒数を指定する。<br> curl -m <秒数> <URL> <br><br> == 通信速度の最適化 == <code>curl</code>コマンドのオプションを組み合わせることにより、様々な通信状況に対応した最適化が可能である。<br> <br> 例えば、低速な回線で大量のデータをダウンロードする場合は、以下に示すようなオプションを付加する。<br> * <code>-retry</code> *: 転送が失敗した場合のリトライ回数を指定する。 * <code>-retry-delay</code>オプション *: リトライする場合の待ち時間を指定する。 * <code>-connect-timeout</code> *: 接続のタイムアウト時間を指定する。 <br> curl --limit-rate <転送速度の上限> --compressed --retry <リトライ回数> --retry-delay <リトライ時の待ち時間> --connect-timeout <タイムアウト時間(秒)> <URL> # 実行例 # 転送速度を50KB/sに制限、圧縮転送を行い、最大3回のリトライ、リトライの間隔は5秒、接続のタイムアウト時間は10秒 curl --limit-rate 50K --compressed --retry 3 --retry-delay 5 --connect-timeout 10 https://example.com <br><br> == エラー関連 == ==== Could not resolve host: <URL> ==== まず、PCが正常にインターネット接続されているかどうかを確認する。<br> 次に、URLが正しいかどうかを確認する。<br> <br> ==== Failed to connect to <URL>.com port <ポート番号>: Connection refused ==== まず、ポート番号が正しいかどうかを確認する。<br> 次に、接続先のサーバが稼働しているかどうかを確認する。<br> <br> ==== Operation timed out after 30000 milliseconds with 0 bytes received ==== タイムアウト時間を伸ばす、または、サーバの応答速度を改善する。<br> <br><br> __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
Linuxコマンド - curl
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse