1. ホーム
  2. リナックス

curlコマンドの使用。HTTPリクエスト、ファイルダウンロード、FTPアップロードとダウンロード

2022-03-01 05:59:02
<パス

この記事へのリンク https://blog.csdn.net/xietansheng/article/details/84637993

1. curlコマンドの紹介

cURL (CommandLine Uniform Resource Locator)と呼ばれる、コマンドライン端末でURL構文を用いて使用するWebリクエストツールで、HTTP、HTTPS、FTPなどのプロトコルに対応しています。 cURLは、アプリケーション開発用にlibcurlとしても提供されています。

LinuxとMACは一般的にcurlがデフォルトでインストールされているので、ターミナルで直接コマンドを使用することができます。 curl.haxx.se をクリックしてダウンロードし、インストールしてください。

Windowsシステムのcurlダウンロードアドレスです。 https://curl.haxx.se/windows/ コマンド実行ファイルは、ダウンロード・解凍後、binフォルダにあります。

2. curlコマンドの書式

2.1 基本構文

curl [options...] 

2.2 共通パラメータ

<ブロッククオート

追記:(H)はHTTP/HTTPSのみ、(F)はFTPのみを意味します。

  • 共通のパラメータです。
    Show Info
    -h/--help # Print help information
    -V/--version # Show version information
    -s/--silent # Silent mode, no output
    -i/--include # Output includes headers information
    -v/--verbose # Show details
    -#/--progress-bar # Show the transfer as a progress bar
    
    
  • 共通のパラメータです。
    Headers
    -H/--header LINE (H) # Add a request header, multiple -H parameters can be added, 
                                    # Parameter format: -H "NAME: VALUE"
    
    -A/--user-agen STRING (H) # User-Agent field of the request header
    -e/--referer URL (H) # The Referer field of the request header
    -r/--range RANGE (H) # The Range field of the request header
    -b/--cookie STRING/FILE (H) # The cookie field of the request header, provided as a string, 
                                    # or read from the specified cookie file
    
    -c/--cookie-jar FILE (H) # Save the cookie in the response header to the specified file
    
    -D/--dump-header FILE # Save the headers information to the specified file
    -I/--head # Show only the document information (only the response headers)
    
    
  • 共通のパラメータです。
    Request Content
    # Execute the command, or request method if it is HTTP, such as: GET, POST, PUT, DELETE, etc.
    # If it's FTP, it executes the FTP protocol command
    -X/--request COMMAND
    
    # HTTP POST request content (and automatically issue POST request), for example: aa=bb&cc=dd
    -d/--data DATA (H)
    
    # HTTP multipart POST form data, (and automatically issue a POST request)
    # Multiple form fields can add multiple -H parameters, if it is a file parameter, the path value needs to be preceded by @
    # Reference format: -F "name1=@/filepath" -F "name2=stringvalue"
    -F/--form CONTENT (H)                   
    
    
  • 共通のパラメータです。
    Response Content
    -o/--output FILE FILE # Output the response to the specified file
    -O/--remote-name # Save the response to the current directory using the URL's filename as the filename
    -C/--continue-at OFFSET # Continue the transmission from the offset position at the breakpoint
    
    
  • 共通のパラメータです。
    Other
    -y/--speed-time SECONDS # Connection timeout in seconds, default is 30
    -m/--max-time SECONDS # Read timeout, must finish transferring data within this time, unit: second
    --limit-rate RATE # Transfer speed limit, unit: Byte/s
    
    -x/--proxy [PROTOCOL://]HOST[:PORT] # Set proxy
    -U/--proxy-user USER[:PASSWORD] # Username and password for the proxy
    -u/--user USER[:PASSWORD][;OPTIONS] # Set the server's user password and login options
    --cacert FILE (SSL) # Use the specified CA certificate
    
    -P/--ftp-port ADR (F) # Specify the port for FTP transfers
    -T/--upload-file FILE # Upload a file to the specified URL (http/ftp) location, 
                                # Reference format: -T "file1" or -T "{file1,file2}"
    
    -Q/--quote CMD (F/SFTP) # Execute commands, -X executes only one command, -Q executes multiple commands,
                                # Multiple commands will be executed in order,
                                # Reference format: -Q "cmd1" -Q "cmd2"
    
    

3. curlコマンドの使用例

3.1 HTTP/HTTPS ネットワークリクエスト

  • 通常のGETリクエスト
curl https://www.baidu.com/ # GET request, output response content
curl -I https://www.baidu.com/ # GET request, output response headers only
curl -i https://www.baidu.com/ # GET request, output response headers, response content
curl -v https://www.baidu.com/ # GET request, output communication process, header information, response content, etc.


  • データを送信するためのPOSTリクエスト
# POST to submit JSON data (\ means the command statement is not finished, continue on a new line)
curl -H "Content-Type: application/json" \
     -d '{"username":"hello", "password":"123456"}' \
     http://localhost/login

# POST submit form data
curl -F "username=hello" \
     -F "password=123456" \
     -F "[email protected]" \
     http://localhost/register



  • ファイルのダウンロード
# Specify the name of the saved file to download the file
curl https://www.baidu.com -o baidu.txt

# Save the downloaded file using the resource filename specified by the URL (the URL must point to a specific filename)
curl https://www.baidu.com/index.html -O

# Specify the value of the Usaer-Agent and Referer request headers, to download the file
curl -A "Mozilla/5.0 Chrome/70.0.3538.110 Safari/537.36" \
     -e "https://www.baidu.com/" \
     https://www.baidu.com/index.html -O


3.2 FTPによるファイルのアップロード/ダウンロード

FTPサーバーのアドレスが: 192.168.0.100 ユーザー名は: user パスワードは:

passwd

(1) ファイルを見る

# View a list of files in the specified FTP directory (the directory must end with "/") 
curl ftp://192.168.0.100/aaDir/ -u "user:passwd"

# View the contents of the FTP specified file (output directly to the terminal) 
curl ftp://192.168.0.100/aaDir/aa.txt -u "user:passwd"

# Another way to write the username and password (to view the specified directory on the FTP server)
curl ftp://user:[email protected]/aaDir/


(2) ファイルのアップロード

# Upload the aa.txt file to the FTP directory (the directory must end with "/"), and save it under the original file name
curl ftp://192.168.0.100/aaDir/ -u "user:passwd" -T "aa.txt"

# Upload the aa.txt file to the specified FTP directory, and save it under the name bb.txt
curl ftp://192.168.0.100/aaDir/bb.txt -u "user:passwd" -T "aa.txt"

# Upload multiple files at the same time
curl ftp://192.168.0.100/aaDir/ -u "user:passwd" -T "{aa.txt,bb.txt}"


(3) ファイルをダウンロードする

# Download the FTP specified file /aaDir/aa.txt, save it to the current directory with the original file name 
curl ftp://192.168.0.100/aaDir/aa.txt -u "user:passwd" -O

# Download the FTP file /aaDir/aa.txt, save it as bb.txt
curl ftp://192.168.0.100/aaDir/aa.txt -u "user:passwd" -o bb.txt


(4) FTPプロトコルのコマンドを実行する

curl FTPコマンド形式を実行する。

  • 単一のコマンドです。 curl [-options] <ftpUrl> -X "FTP command"
  • 複数のコマンド
    curl [-options] <ftpUrl> -Q "FTP command" -Q "FTP command"
    # 
    # Create a folder, create the bbDir folder under the /aaDir/ directory (the directory must end with "/")
    #
    curl -u "user:passwd" ftp://192.168.0.100/aaDir/ -X "MKD bbDir"
    
    # curl 
    # delete the folder, delete the bbDir folder in the /aaDir/ directory (the folder must be empty)
    #
    curl -u "user:passwd" ftp://192.168.0.100/aaDir/ -X "RMD bbDir"
    
    # 
    # Delete the file, delete the aa.txt file in the /aaDir/ directory
    #
    curl -u "user:passwd" ftp://192.168.0.100/aaDir/ -X "DELE aa.txt"
    
    #
    # rename, rename requires two consecutive commands, use two -Q arguments to execute two consecutive commands (must be RNFR first, then RNTO)
    #
    curl -u "user:passwd" ftp://192.168.0.100/ -Q "RNFR OldPath" -Q "RNTO NewPath"
    
    

参考までに他のFTPプロトコルのコマンドを紹介します。