Linux Curl命令示例

linux

curl是用于在本地计算机与远程服务器之间传输数据的命令行工具。使用curl时您可以使用HTTP,HTTPS, SCP , SFTP和FTP等协议下载或上传数据。Curl提供了许多选项,使您可以恢复上传/下载,限制带宽,代理支持,用户身份验证等。

在本教程中,我们将说明如何使用curl。包括安装curl,下载一个文件或者多个文件,curli下载的恢复/断点续传,打印curl请求的响应头,测试网站是否支持HTTP/2,跟随301重定向,登录/访问FTP服务器下载文件,更改用户代理User-Agent,使curl通过代理下载文件,发送Cookie等。

安装Curl

curl命令已预装在大多数Linux发行版中。要检查系统上是否安装了curl命令,请打开控制台,键入curl,然后按Enter。

如果已安装curl,则系统将打印curl: try 'curl --help' or 'curl --manual' for more information,否则您将看到类似于curl命令未找到curl command not found的信息。如果你尚未安装curl,则可以使用发行版的软件包管理器apt命令或者yum命令安装curl

在Ubuntu和Debian上安装Curl

sudo apt install curl

在CentOS和Fedora上安装Curl

sudo yum install curl

Curl命令与选项

curl命令的语法如下:

curl [options] [URL...]

options指定curl的选项。URL表示远程服务器的地址。在不使用任何选项的情况下,curl将下载指定的URL资源重定向到标准输出中。

以下curl命令,将会下载我们站点的首页myfreax.com,并重定向到标准输出:

curl myfreax.com

该命令将在您的终端中打印myfreax.com主页的源码。如果您未指定使用的协议,curl将默认使用HTTP协议。

下载文件

要保存curl命令下载的文件,可以使用-o-O选项。使用小写-o选项你可以指定保存文件的名称。你还可以指定绝对路径,curl命令将会把文件到你指定的绝对路径中。

以下curl命令将会下载vue.js文件到你当前的目录中,并使用vue-v2.5.16.js名称保存文件:

curl -o vue-v2.5.16.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js

大写-O将使用其原始文件名保存文件:

curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js

下载多个文件

要一次下载多个文件,请使用多个-O选项,后跟要下载文件的URL。在以下示例中,我们下载Arch Linux和Debian iso文件:

curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso  \

-O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso

恢复/断点续传下载

您可以使用-C -选项恢复下载。如果您在下载大文件期间断开连接。你无需从头开始下载,可以使用-C -选项继续上一次的下载。

例如,如果要使用curl命令下载Ubuntu 18.04 iso文件突然之间您的连接断开了,您可以通过以下方式恢复下载:

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

打印HTTP响应头

HTTP响应头是使用冒号分隔的键/值对,其中包含服务器类型,通常是Nginx/Apache,内容类型和HTTP状态码等信息。-I选项允许您仅获取指定URL资源的响应头:

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

测试HTTP/2的支持

要检查指定的URL是否支持HTTP/2协议,请使用-I--http2选项来获取HTTP响应头,然后使用grep过滤输出:

curl -I --http2 -s https://myfreax.com/ | grep HTTP

-s选项,指示curl以静默方式运行并隐藏进度和错误消息。如果远程服务器支持HTTP/2协议,则curl将打印HTTP/2.0 200

HTTP/2 200

否则,响应将为HTTP/1.1 200 :

HTTP/1.1 200 OK

如果您使用的curl版本7.47.0或更高版本,则不需要使用--http2选项,因为默认情况下,所有HTTPS连接都启用了HTTP/2。

跟随301重定向

如果您尝试在没有www的情况下检索google.com主页,你会注意到以下301页面的内容:

curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">

<TITLE>301 Moved</TITLE></HEAD><BODY>

<H1>301 Moved</H1>

The document has moved

<A HREF="http://www.google.com/">here</A>.

</BODY></HTML>

从上面的输出中可以看到,google.com被重定向到www版本,并且由于默认情况下curl不遵循HTTP Location header,因此您不会获得Google主页的源码。

-L选项,指示curl遵循301重定向,直到到达最终目的地:

curl -L google.com

使用用户代理User-Agent

有时,在下载文件时,可以配置远程服务器阻止curl的User-Agent用户代理,或者根据访问者的设备和浏览器,提供的不同页面内容。

为了避免服务器根据访问者的User-Agent用户代理提供不同内容。您可以使用curl命令的-A选项模拟其他浏览器的User-Agent用户代理。

curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/

上面的命令将模拟Firefox 60从getfedora.org 请求页面。

限制最大传输速度

--limit-rate选项允许您限制数据传输速度/速率。该值可以以字节表示,以k为后缀时表示为千字节,以m为后缀表示为兆字节,以g为后缀表示为千兆字节。

以下curl命令,将下载Go二进制文件并将下载速度限制为1MB:

curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz

当您不希望curl消耗所有可用带宽时,此选项很有用。

FTP协议下载/上传文件

要使用curl命令访问受保护的FTP服务器,请使用-u选项并指定用户名和密码。以下curl命令将列出用户的FTP目录中的所有文件。

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

如你需要从FTP服务器下载文件,您可以使用以下curl命令下载文件到当前目录中:

curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz

要将文件上传到FTP服务器,请使用-T选项,然后加上您要上传的文件的名称:

curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/

使用curl发出请求时,默认情况下不发送或存储任何cookie。有时您可能需要使用特定的Cookie发起HTTP请求才能访问远程资源或调试问题。要将Cookie发送到服务器,请使用-b选项,后跟Cookie字符串或者包含Cookie的文件名称。

例如,要下载Oracle Java JDK rpm文件jdk-10.0.2_linux-x64_bin.rpm,您需要传递一个名为oraclelicense的cookie,其值为a

curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm

使用代理

Curl支持不同类型的代理,包括HTTP,HTTPS和SOCKS。要通过代理服务器传输数据,请使用-x/--proxy选项,后跟代理URL。

以下curl命令将使用192.168.44.1:8888代理服务器,访问http://linux.com/页面:

curl -x 192.168.44.1:8888 http://linux.com/

如果代理服务器需要身份验证,请使用-U/--proxy-user选项,后跟用冒号分隔的用户名和密码user:password

curl -U mark:Passvv0rd -x 192.168.44.1:8888 http://linux.com/

结论

本教程中显示的示例很简单,但演示了最常用的curl选项,旨在帮助您了解curl命令的工作方式。要了解有关curl的更多信息,请访问curl文档页。

以上是 Linux Curl命令示例 的全部内容, 来源链接: utcz.com/z/507145.html

回到顶部