Linux wget和curl进阶使用

这篇具有很好参考价值的文章主要介绍了Linux wget和curl进阶使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

wget

wget是一个流行的、免费的、非交互式的命令行工具,主要用于从网络上下载文件。支持通过HTTP、HTTPS和FTP协议下载,并且它是递归下载的,这意味着它可以镜像网站或获取完整的FTP目录结构。

下载单个文件

使用wget时,只指定了url地址,表示从网络中下载单个文件到当前目录,这是wget最基础的用法。

如果没有指定下载的文件名是什么,默认会使用URL的最后一部分作为默认的文件名,如果知道下载的这个文件叫什么名字,可以用 -O(大写)参数来指定下载的文件名。

使用wget下载文件时,它会默认在屏幕上显示下载的进度和其他相关消息,可以使用 -o(小写) 参数并指定一个文件名,那么这些输出消息会被重定向到该文件,而不是显示在屏幕上。

wget的 -O和 -o的区别:

  • -o:将输出到屏幕上的日志信息保存在一个文件中

  • -O:指定下载文件的文件名

wget -O file_name url_path

说明:

  • wget支持断点续传功能,如果一个大文件的下载被中断,你可以使用 wget 的 -c 参数来 继续从中断点开始下载

例如:

# 将文件保存为名为 CentOS-Base.repo 的文件。即使原始文件的名称是不同的,它仍将被保存为 CentOS-Base.repo。
wget -O CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.rep

# 下载的文件会被保存为原始文件的名称  CentOS-Base.repo这个文件只会包含该下载过程中生成的所有日志信息
wget -o  CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
Linux wget和curl进阶使用

检查http/https连通性

使用wget检查URL的连通性时,实际上是在进行两个层面的检查

  • 传输层(TCP): 首先检查是否可以建立到指定IP和端口的TCP连接。这实质上是检查传输层的连通性。

  • 应用层(HTTP/HTTPS): 一旦TCP连接建立,wget会发送HTTP请求(例如HEAD请求,当使用--spider选项时)到服务器,并等待响应。服务器的响应告诉你是否该URL在应用层上是可访问


检查http/https连通性的时候,通过 --spider 选项告诉 wget 不要下载任何内容,使用 -S 参数 来查看服务器响应头。这样就可以通过响应头来检查http的连通性了。

如果检查某个http/https的url连通性时,需要指定端口的话,只需在URL中添加:[端口号]就行了

wget --spider -S url_path

wget --spider -S http://www.example.com:5000/

例如: 检查这个url的连通性

wget  --spider -S   http://www.forthink.xyz:5000/sharing/OmbrfIbc4
Linux wget和curl进阶使用

例如: 检查指定url的连通性,并指定端口号

wget  --sipder -S http://192.168.0.104:80
Linux wget和curl进阶使用

curl

url 是一个命令行工具,用于从服务器或到服务器传输数据。这个工具非常强大,支持各种协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、LDAP、DAP等。在Web开发中,curl 主要用于进行HTTP请求。

这里我们主要介绍curl和http/https的交互

显示url内容

如果使用curl命令的时候,后面只提供了一个url地址,那么默认curl执行的是 HTTP 的 GET 请求

curl http://example.com

指定指定请求

默认执行的是http的GET请求,但是通过 —X(大写)参数。可以指定curl发起的请求类型。

  • -X POST : 发起POST请求

  • —X PUT : 发起PUT请求

例如:

 curl -X POST http://192.168.0.102

说明:当指定curl指定POST请求时,如果要给服务器传递参数,可以使用 -d 或者 --data来实现。可以指定多个参数

curl -X PSOT -d "key=value" -d "key=vale" url_path

例如:

curl -X POST -d "username=admin" -d "password=c93ccd78b2076528346216b3b2f701e6" -d "http_api_version=4.27" http://192.168.13.255/EHCommon/admin/user/login
Linux wget和curl进阶使用

如果是传递json数据的话,还需要使用 -H 来指定请求头的信息,指定 Content-Type 为 application/json

curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' url_path

显示请求头信息

如果想要显示http/https的请求头信息,可以使用 -i(小写) 参数来实现,但是通过也会把url中的内容给显示出来,如果只想要显示请求头信息,通过 -I(大写)参数指定即可。

使用 curl 或 wget 等工具并且没有指定协议时,它们默认使用的是 HTTP 协议

curl -I 192.168.0.102

下载单个文件

curl可以和wget一样下载单个文件,通过 -o(小写)和 -O(大写)来指定文件名进行下载。

  • -o:需要指定下载文件的文件名

  • -O: 会根据远程文件的URL来确定本地保存的文件名

curl -O http://example.com/index.html

curl -o http://example.com/index.html

例如:

Linux wget和curl进阶使用

忽略证书验证

使用curl的 -k 参数可以在访问https的时候,忽略证书的验证。

因为使用curl命令访问一个使用SSL/TLS加密的网站(例如:https网址)时,curl默认会尝试验证服务器的SSL证书。如果服务器使用一个自签名证书,或者使用的证书由一个不被curl默认信任的证书颁发机构(CA)颁发。在这种情况下,curl会拒绝建立连接,并给出一个SSL证书错误。使用了 -k或者--insecure 参数后,即使证书是自签名的,或者不是由受信任的CA签发的,curl也会与服务器建立连接。

例如:

Linux wget和curl进阶使用

静默模式输出

默认情况下,使用curl的时候,会显示进度信息或错误消息,如果不希望命令的标准输出中混入不必要的进度或其他消息。使用 -s 参数即可隐藏这些信息的显示。

例如:
Linux wget和curl进阶使用

输出指定信息

如果只想要输出指定的信息部分,使用 -w 参数可以实现。

格式:

curl -w  "格式化字符串" url_path

# curl提供的各种内置变量
%{http_code}: 显示HTTP响应代码。
%{time_total}: 显示请求总时间。
%{url_effective}: 显示实际请求的URL,特别是在重定向时很有用。
%{content_type}: 响应中的Content-Type(Content-Type指示资源的媒体类型(或称为 MIME 类型)。这告诉接收端(通常是浏览器)该如何解释或显示这个资源。)
%{time_namelookup}: DNS解析域名所需的时间。

方法一:

通过 -I 参数显示http的请求头,然后结合grep和awk取得请求信息。

curl -I http://192.168.0.102/index.php 2>&1 | grep HTTP | awk '{print $2}'
Linux wget和curl进阶使用

方法二:

通过 -w参数结合curl的内置变量输出http的请求状态信息。

curl -s -o /dev/null  -w "%{http_code}" http://192.168.0.102/index.php

-o 参数是下载文件的文件名,也就是将curl原本输出到屏幕的内容重定向到一个文件里面。这里指定为/dev/null,则url的信息不会显示到屏幕上,只显示 -w 指定的内置变量对应的值。文章来源地址https://www.toymoban.com/news/detail-711120.html

到了这里,关于Linux wget和curl进阶使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 三种方式查看linux终端terminal是否可以访问外网ping,curl,wget

    注意不要用ping www.google.com.hk来验证,因为有墙,墙阻止了你接受网址发回的响应数据。即使你那啥过,浏览器都可以访问Google,terminal里面也是无法得到响应 百度在墙内,所以可以正常拿到响应信息 谷歌在墙外,你用魔法工具,浏览器都能访问谷歌,但是terminal里面会这样

    2023年04月11日
    浏览(33)
  • Linux系统之wget命令的基本使用

    wget命令是一个在Linux和类Unix操作系统中经常使用的网络命令,用途是从指定的URL下载文件。它支持HTTP、HTTPS和FTP协议,支持断点续传,可以下载整个网站。 本次实践环境为个人测试环境,使用操作系统为centos7.6。 hostname IP地址 系统版本 内核版本 jeven 192.168.3.166 centos7.6 3.10

    2024年02月12日
    浏览(27)
  • 【Linux】:使用git命令行 || 在github创建项目 || Linux第一个小程序——进度条(进阶版本)

    在本章开始之前还是先给大家分享一张图片 这是C++的笔试题 感兴趣的同学可以去试一试 有难度的哟 也可以直接在牛客网直接搜索这几道题目哈 好了今天我们正式进入我们的正题部分 安装git 使用 Github 创建项目 注册账号 创建项目 ♨️1. 登陆成功后, 进入个人主页, 点击左下

    2024年02月05日
    浏览(40)
  • Interactive Linear Algebra:免费的交互式线性代数学习教程

    本文介绍一个学习线性代数的网站,该网站通过将线性代数中的数学规则可视化,更直观的展示线性代数的运算过程。该网站可以帮助我们更快更高效的学习线性代数。如果有考研的同学或者觉得学习线性代数很枯燥或者很困难的同学,可以了解该网站,促进高效学习和理解

    2024年02月13日
    浏览(140)
  • linux curl命令使用教程(curl指令)

    curl是一个用于发送HTTP请求的命令行工具,它支持多种协议,包括HTTP、HTTPS、FTP、SMTP等。curl可以用来下载文件、上传文件、发送POST请求、发送表单数据等。 curl的基本用法如下: 其中,URL是要请求的网址或者文件的URL。 常用的选项包括: -o, --output file :将下载的文件保存到

    2024年02月09日
    浏览(36)
  • 构建一个动态交互式图表

    在Web开发中,JavaScript不仅是实现交互效果的关键,还可以用于构建复杂的可视化组件,如动态交互式图表。在本篇博客中,我将演示如何使用JavaScript和HTML5的Canvas元素来创建一个简单的动态条形图。 HTML结构  首先,我们需要一个HTML结构来容纳我们的图表。 JavaScript实现 接下

    2024年02月20日
    浏览(41)
  • Linux 从入门到精通:curl 命令使用详解

    curl 命令是一个在 Linux 系统中利用 URL 工作的命令行文件传输工具,常用于服务访问和文件下载。curl 支持 HTTP、HTTPS、FTP 等多种协议(默认是 HTTP 协议),可用于模拟服务请求以及上传和下载文件。 1.1 安装命令 并非所有系统都自带 curl 命令,对于简洁版的 Linux 系统,可以使

    2024年02月07日
    浏览(34)
  • 【Bash】记录一个长命令换行的BUG

    假设现在我要在terminal执行如下命令跑模型: 由于这个命令太长了,有这样一些问题:1. 改起来不方便,2. 没法存档,3. 不方便在之前命令的基础上修改后并行跑模型。 于是,很自然想到,把这个命令写在run.sh文件中,然后每次只需要如下命令就可以跑了: 所以,这个长命

    2024年02月08日
    浏览(35)
  • 【python】制作一个简单的界面,有手就行的界面~

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! ttkbootstrap 是一个基于 tkinter 的界面美化库, 使用这个工具可以开发出类似前端 bootstrap 风格的 tkinter 桌面程序。 ttkbootstrap 不仅有丰富的案例,同时还有完善的官方文档,可惜是英文的。 不过对于程序员来说,只要用好翻译软件与提

    2024年02月02日
    浏览(30)
  • matlab将一个矩阵所有行的元素合并成一列/一行

    reshape(M, m, n)将矩阵M重排成m * n 反过来,若想 将一行元素拆分成几行, 直接用reshape是不行的,如图:a矩阵拆分成b之后现在想再组回去,数字顺序和原来不同,具体操作如下

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包