curl文件传输工具
创始人
2024-05-14 13:36:09
0

curl文件传输工具

  • 概括介绍
  • 参数说明
  • 常用用法

概括介绍

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

参数说明

curl相关参数及其说明如下:
curl --help all
Usage: curl [options...] --abstract-unix-socket  Connect via abstract Unix domain socket--alt-svc  Enable alt-svc with this cache file--anyauth            Pick any authentication method-a, --append             Append to target file when uploading--aws-sigv4  Use AWS V4 signature authentication--basic              Use HTTP Basic Authentication--cacert       CA certificate to verify peer against--capath        CA directory to verify peer against-E, --cert  Client certificate file and password--cert-status        Verify the status of the server cert via OCSP-staple--cert-type    Certificate type (DER/PEM/ENG/P12)--ciphers  SSL ciphers to use--compressed         Request compressed response--compressed-ssh     Enable SSH compression-K, --config       Read config from a file--connect-timeout  Maximum time allowed for connection--connect-to  Connect to host-C, --continue-at  Resumed transfer offset-b, --cookie  Send cookies from string/file-c, --cookie-jar  Write cookies to  after operation--create-dirs        Create necessary local directory hierarchy--create-file-mode  File mode for created files--crlf               Convert LF to CRLF in upload--crlfile      Use this CRL list--curves  (EC) TLS key exchange algorithm(s) to request-d, --data         HTTP POST data--data-ascii   HTTP POST ASCII data--data-binary  HTTP POST binary data--data-raw     HTTP POST data, '@' allowed--data-urlencode  HTTP POST data URL encoded--delegation  GSS-API delegation permission--digest             Use HTTP Digest Authentication-q, --disable            Disable .curlrc--disable-eprt       Inhibit using EPRT or LPRT--disable-epsv       Inhibit using EPSV--disallow-username-in-url Disallow username in URL--dns-interface  Interface to use for DNS requests--dns-ipv4-addr 
IPv4 address to use for DNS requests--dns-ipv6-addr
IPv6 address to use for DNS requests--dns-servers DNS server addrs to use--doh-cert-status Verify the status of the DoH server cert via OCSP-staple--doh-insecure Allow insecure DoH server connections--doh-url Resolve host names over DoH-D, --dump-header Write the received headers to --egd-file EGD socket path for random data--engine Crypto engine to use--etag-compare Pass an ETag from a file as a custom header--etag-save Parse ETag from a request and save it to a file--expect100-timeout How long to wait for 100-continue-f, --fail Fail fast with no output on HTTP errors--fail-early Fail on first transfer error, do not continue--fail-with-body Fail on HTTP errors but save the body--false-start Enable TLS False Start-F, --form Specify multipart MIME data--form-escape Escape multipart form field/file names using backslash--form-string Specify multipart MIME data--ftp-account Account data string--ftp-alternative-to-user String to replace USER [name]--ftp-create-dirs Create the remote dirs if not present--ftp-method Control CWD usage--ftp-pasv Use PASV/EPSV instead of PORT-P, --ftp-port
Use PORT instead of PASV--ftp-pret Send PRET before PASV--ftp-skip-pasv-ip Skip the IP address for PASV--ftp-ssl-ccc Send CCC after authenticating--ftp-ssl-ccc-mode Set CCC mode--ftp-ssl-control Require SSL/TLS for FTP login, clear for transfer-G, --get Put the post data in the URL and use GET-g, --globoff Disable URL sequences and ranges using {} and []--happy-eyeballs-timeout-ms Time for IPv6 before trying IPv4--haproxy-protocol Send HAProxy PROXY protocol v1 header-I, --head Show document info only-H, --header
Pass custom header(s) to server-h, --help Get help for commands--hostpubmd5 Acceptable MD5 hash of the host public key--hostpubsha256 Acceptable SHA256 hash of the host public key--hsts Enable HSTS with this cache file--http0.9 Allow HTTP 0.9 responses-0, --http1.0 Use HTTP 1.0--http1.1 Use HTTP 1.1--http2 Use HTTP 2--http2-prior-knowledge Use HTTP 2 without HTTP/1.1 Upgrade--http3 Use HTTP v3--ignore-content-length Ignore the size of the remote resource-i, --include Include protocol response headers in the output-k, --insecure Allow insecure server connections--interface Use network INTERFACE (or address)-4, --ipv4 Resolve names to IPv4 addresses-6, --ipv6 Resolve names to IPv6 addresses--json HTTP POST JSON-j, --junk-session-cookies Ignore session cookies read from file--keepalive-time Interval time for keepalive probes--key Private key file name--key-type Private key file type (DER/PEM/ENG)--krb Enable Kerberos with security --libcurl Dump libcurl equivalent code of this command line--limit-rate Limit transfer speed to RATE-l, --list-only List only mode--local-port Force use of RANGE for local port numbers-L, --location Follow redirects--location-trusted Like --location, and send auth to other hosts--login-options Server login options--mail-auth
Originator address of the original email--mail-from
Mail from this address--mail-rcpt
Mail to this address--mail-rcpt-allowfails Allow RCPT TO command to fail for some recipients-M, --manual Display the full manual--max-filesize Maximum file size to download--max-redirs Maximum number of redirects allowed-m, --max-time Maximum time allowed for transfer--metalink Process given URLs as metalink XML file--negotiate Use HTTP Negotiate (SPNEGO) authentication-n, --netrc Must read .netrc for user name and password--netrc-file Specify FILE for netrc--netrc-optional Use either .netrc or URL-:, --next Make next URL use its separate set of options--no-alpn Disable the ALPN TLS extension-N, --no-buffer Disable buffering of the output stream--no-clobber Do not overwrite files that already exist--no-keepalive Disable TCP keepalive on the connection--no-npn Disable the NPN TLS extension--no-progress-meter Do not show the progress meter--no-sessionid Disable SSL session-ID reusing--noproxy List of hosts which do not use proxy--ntlm Use HTTP NTLM authentication--ntlm-wb Use HTTP NTLM authentication with winbind--oauth2-bearer OAuth 2 Bearer Token-o, --output Write to file instead of stdout--output-dir Directory to save files in-Z, --parallel Perform transfers in parallel--parallel-immediate Do not wait for multiplexing (with --parallel)--parallel-max Maximum concurrency for parallel transfers--pass Pass phrase for the private key--path-as-is Do not squash .. sequences in URL path--pinnedpubkey FILE/HASHES Public key to verify peer against--post301 Do not switch to GET after following a 301--post302 Do not switch to GET after following a 302--post303 Do not switch to GET after following a 303--preproxy [protocol://]host[:port] Use this proxy first-#, --progress-bar Display transfer progress as a bar--proto Enable/disable PROTOCOLS--proto-default Use PROTOCOL for any URL missing a scheme--proto-redir Enable/disable PROTOCOLS on redirect-x, --proxy [protocol://]host[:port] Use this proxy--proxy-anyauth Pick any proxy authentication method--proxy-basic Use Basic authentication on the proxy--proxy-cacert CA certificate to verify peer against for proxy--proxy-capath CA directory to verify peer against for proxy--proxy-cert Set client certificate for proxy--proxy-cert-type Client certificate type for HTTPS proxy--proxy-ciphers SSL ciphers to use for proxy--proxy-crlfile Set a CRL list for proxy--proxy-digest Use Digest authentication on the proxy--proxy-header
Pass custom header(s) to proxy--proxy-insecure Do HTTPS proxy connections without verifying the proxy--proxy-key Private key for HTTPS proxy--proxy-key-type Private key file type for proxy--proxy-negotiate Use HTTP Negotiate (SPNEGO) authentication on the proxy--proxy-ntlm Use NTLM authentication on the proxy--proxy-pass Pass phrase for the private key for HTTPS proxy--proxy-pinnedpubkey FILE/HASHES public key to verify proxy with--proxy-service-name SPNEGO proxy service name--proxy-ssl-allow-beast Allow security flaw for interop for HTTPS proxy--proxy-ssl-auto-client-cert Use auto client certificate for proxy (Schannel)--proxy-tls13-ciphers TLS 1.3 proxy cipher suites--proxy-tlsauthtype TLS authentication type for HTTPS proxy--proxy-tlspassword TLS password for HTTPS proxy--proxy-tlsuser TLS username for HTTPS proxy--proxy-tlsv1 Use TLSv1 for HTTPS proxy-U, --proxy-user Proxy user and password--proxy1.0 Use HTTP/1.0 proxy on given port-p, --proxytunnel Operate through an HTTP proxy tunnel (using CONNECT)--pubkey SSH Public key file name-Q, --quote Send command(s) to server before transfer--random-file File for reading random data from-r, --range Retrieve only the bytes within RANGE--rate Request rate for serial transfers--raw Do HTTP "raw"; no transfer decoding-e, --referer Referrer URL-J, --remote-header-name Use the header-provided filename-O, --remote-name Write output to a file named as the remote file--remote-name-all Use the remote file name for all URLs-R, --remote-time Set the remote file's time on the local output--remove-on-error Remove output file on errors-X, --request Specify request method to use--request-target Specify the target for this request--resolve <[+]host:port:addr[,addr]...> Resolve the host+port to this address--retry Retry request if transient problems occur--retry-all-errors Retry all errors (use with --retry)--retry-connrefused Retry on connection refused (use with --retry)--retry-delay Wait time between retries--retry-max-time Retry only within this period--sasl-authzid Identity for SASL PLAIN authentication--sasl-ir Enable initial response in SASL authentication--service-name SPNEGO service name-S, --show-error Show error even when -s is used-s, --silent Silent mode--socks4 SOCKS4 proxy on given host + port--socks4a SOCKS4a proxy on given host + port--socks5 SOCKS5 proxy on given host + port--socks5-basic Enable username/password auth for SOCKS5 proxies--socks5-gssapi Enable GSS-API auth for SOCKS5 proxies--socks5-gssapi-nec Compatibility with NEC SOCKS5 server--socks5-gssapi-service SOCKS5 proxy service name for GSS-API--socks5-hostname SOCKS5 proxy, pass host name to proxy-Y, --speed-limit Stop transfers slower than this-y, --speed-time Trigger 'speed-limit' abort after this time--ssl Try SSL/TLS--ssl-allow-beast Allow security flaw to improve interop--ssl-auto-client-cert Use auto client certificate (Schannel)--ssl-no-revoke Disable cert revocation checks (Schannel)--ssl-reqd Require SSL/TLS--ssl-revoke-best-effort Ignore missing/offline cert CRL dist points-2, --sslv2 Use SSLv2-3, --sslv3 Use SSLv3--stderr Where to redirect stderr--styled-output Enable styled output for HTTP headers--suppress-connect-headers Suppress proxy CONNECT response headers--tcp-fastopen Use TCP Fast Open--tcp-nodelay Use the TCP_NODELAY option-t, --telnet-option Set telnet option--tftp-blksize Set TFTP BLKSIZE option--tftp-no-options Do not send any TFTP options-z, --time-cond

常用用法

使用curl可以下载文件、测试网络性能,常用的用法可参考如下案例。
案例1 通过本地网络下载文件

  • 前提:板子和PC连接到同一台路由器(有线、无线均可):
  • 操作步骤:
    • PC上开启http server功能:
      如果安装的 python2:
      python -m SimpleHTTPServer
      如果安装的 pyhthon3及以上版本:
      python -m http.server
      执行完上述命令后,PC会将执行Python命令的当前目录为根目录启动一个http server

    • 将传输的文件放到执行pyhon命令执行的目录下

    • 在设备上启动Wi-Fi并连接到路由器
      ifup wlan0
      wapi psk wlan0 11111111 3 # 红色标记为 Wi-Fi密码
      wapi essid wlan0 Xiaomi_8A9D 1 # 红色标记为 Wi-Fi名称
      renew wlan0

    • 板子上从http server拉取文件并保存到本地
      curl -o /data/ota.zip http://YOUR_FILE_SERVER_IP:8000/ota.zip &
      /* 将YOUR_FILE_SERVER_IP地址服务器上的ota.zip文件保存到本地的/data/ota.zip文件中 */

案例2 获取网页内容
curl www.xiaomi.com
/* 对www.xiaomi.com域名做pull请求,并将返回结果打印到当前窗口 */

案例3 - 获取需要重定向的网络文件并保存到本地
curl -L -o /data/test.mp3 https://resource-preview.ai.****.com/cp_resource_locator/c/v3/material_v3_service?audioId=963417152362121981&auth=MIOT-TOKEN-V1%20app_id:xxxx,session_id:xxxx,token:xxxx,device_id:xxxx

注意事项:

  • 如果网络文件地址需要重定向才能获取到实际的下载链接,需要使用"-L"命令跟踪到重定向URL后再进行下载
  • URL:
    • 设备上的URL前后请不要用"" (PC上面的curl可以使用"")
    • URL中如下特殊字符需要做转义:
转义前转以后
+%20
空格%20
/%2F
?%3F
%%25
&%26
=%3D
#%23

案例4 - 测试网络连接性能

curl -w "TCP handshake: %{time_connect}, SSL handshake: %{time_appconnect}\n" -so /dev/null https://baidu.com/

执行结果解析:

# TCP 3次握手所花时间:0.035127
# SSL 握手所花时间:0.500842
TCP handshake: 0.035127, SSL handshake: 0.500842

相关内容

热门资讯

原生安卓系统怎样升级,从基础到... 你有没有发现,你的安卓手机用久了,有时候就像老牛拉车一样,慢吞吞的?别急,今天就来给你支个招,让你的...
安卓13系统怎么开发,开发者的... 你有没有听说安卓13系统已经发布了?这可是个大新闻呢!作为一个热衷于手机开发的小伙伴,你是不是也跃跃...
安卓q系统镜像下载,轻松升级体... 你有没有听说安卓Q系统已经发布了?这可是安卓家族里的一大亮点呢!今天,我就要来给你详细介绍一下安卓Q...
安卓系统色彩校正软件,打造个性... 你有没有发现,手机屏幕的色彩有时候会让人感觉不太对劲?有时候,画面看起来有点灰蒙蒙的,有时候又太艳丽...
苹果能否下个安卓系统,开启新篇... 你有没有想过,苹果的iOS系统会不会有一天突然宣布,它要拥抱安卓的大家庭呢?想象iPhone和iPa...
树莓派 装 安卓系统,轻松安装... 你有没有想过,用树莓派装上安卓系统,那会是怎样一番景象呢?想象一个迷你电脑,竟然能运行起我们日常使用...
安卓系统怎么打印小票,安卓系统... 你是不是也遇到了这样的烦恼:手机里存了好多重要的小票,但是想打印出来保存或者报销,却发现安卓系统里的...
安卓10安装系统应用,轻松上手... 你有没有发现,你的安卓手机最近是不是有点儿“慢吞吞”的?别急,别急,今天就来给你支个招——升级安卓1...
美国不提安卓系统华为,迈向自主... 华为与美国:一场关于技术、市场与政策的较量在当今这个数字化的世界里,智能手机已经成为我们生活中不可或...
安卓系统怎么打开ppt,选择文... 你有没有遇到过这种情况:手里拿着安卓手机,突然需要打开一个PPT文件,却怎么也找不到方法?别急,今天...
谷歌退回到安卓系统,探索创新未... 你知道吗?最近科技圈可是炸开了锅,谷歌竟然宣布要退回到安卓系统!这可不是一个简单的决定,背后肯定有着...
安卓系统待机耗电多少,深度解析... 你有没有发现,手机电量总是不经用?尤其是安卓系统,有时候明明没怎么用,电量就“嗖”的一下子就下去了。...
小米主题安卓原生系统,安卓原生... 亲爱的手机控们,你是否曾为手机界面单调乏味而烦恼?想要给手机换换“衣服”,让它焕然一新?那就得聊聊小...
voyov1安卓系统,探索创新... 你有没有发现,最近你的手机是不是变得越来越流畅了?没错,我要说的就是那个让手机焕发青春的Vivo V...
电脑刷安卓tv系统,轻松打造智... 你有没有想过,家里的安卓电视突然变得卡顿,反应迟钝,是不是时候给它来个“大保健”了?没错,今天就要来...
安卓系统即将要收费,未来手机应... 你知道吗?最近有个大消息在科技圈里炸开了锅,那就是安卓系统可能要开始收费了!这可不是开玩笑的,这可是...
雷凌车载安卓系统,智能出行新体... 你有没有发现,现在的汽车越来越智能了?这不,我最近就体验了一把雷凌车载安卓系统的魅力。它就像一个聪明...
怎样拍照好看安卓系统,轻松拍出... 拍照好看,安卓系统也能轻松搞定!在这个看脸的时代,拍照已经成为每个人生活中不可或缺的一部分。无论是记...
安卓车机系统音频,安卓车机系统... 你有没有发现,现在越来越多的汽车都开始搭载智能车机系统了?这不,咱们就来聊聊安卓车机系统在音频方面的...
老苹果手机安卓系统,兼容与创新... 你手里那台老苹果手机,是不是已经陪你走过了不少风风雨雨?现在,它竟然还能装上安卓系统?这可不是天方夜...