10个wget命令示例可帮助您进行故障排除

sysadmin常用的工具之一是wget。与网络相关的故障排除过程中非常方便.


什么是wget命令?

wget命令是流行的Unix / Linux命令行实用程序,用于从Web上获取内容。它是免费使用的,并提供了一种非交互方式从Web下载文件。 wget命令开箱即用地支持HTTPS,HTTP和FTP协议。此外,您也可以将HTTP代理与其一起使用.

如何帮助您进行故障排除?

有很多方法.

作为系统管理员,大多数情况下,您将在终端上工作,并且在对与Web应用程序相关的问题进行故障排除时,您可能不想检查整个页面,而只需要检查连通性。或者,您想验证Intranet网站。或者,您想下载某个页面以验证内容.

wget是非交互式的,这意味着即使您注销也可以在后台运行它。在许多情况下,即使从网络上进行文件检索,对于断开系统连接还是至关重要的。在后台,wget将运行并完成其分配的工作.

它也可以用于在您的本地计算机上获取整个网站。它可以跟随链接 XHTML和HTML 页面以创建本地版本。为此,它必须递归下载页面。这非常有用,因为您可以使用它来下载重要的页面或站点以供离线查看.

让我们看看它们的实际效果。 wget的语法如下.

wget [选项] [URL]

下载网页

让我们尝试下载一个页面。例如:github.com

wget github.com

如果连接良好,则它将下载主页并显示如下输出.

[受电子邮件保护]:〜#wget github.com
由于HSTS策略,URL转换为HTTPS
–2020-02-23 10:45:52– https://github.com/
正在解析github.com(github.com)… 140.82.118.3
正在连接到github.com(github.com)| 140.82.118.3 |:443 …已连接.
HTTP请求已发送,正在等待响应… 200 OK
长度:未指定[text / html]
保存到:“ index.html”

index.html [ <=> ] 131.96K –.- KB / s在0.04s

2020-02-23 10:45:52(2.89 MB / s)-保存了’index.html'[135126]

[受电子邮件保护]:〜#

下载多个文件

当您必须一次下载多个文件时非常方便。这可以为您提供有关通过某些脚本自动下载文件的想法.

让我们尝试下载Python 3.8.1和3.5.1文件.

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz https://www.python.org/ftp/python/3.5.1/Python-3.5.1。 g

因此,您可以猜测,语法如下.

wget URL1 URL2 URL3

您只需要确保在URL之间留出空格.

限制下载速度

当您要检查文件以不同带宽下载需要花费多少时间时,这将很有用.

使用–limit-rate选项,您可以限制下载速度.

这是下载Nodejs文件的输出.

[受电子邮件保护]:〜#wget https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
–2020-02-23 10:59:58– https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
正在解析nodejs.org(nodejs.org)… 104.20.23.46,104.20.22.46,2606:4700:10 :: 6814:162e, …
正在连接到nodejs.org(nodejs.org)| 104.20.23.46 |:443 …已连接.
HTTP请求已发送,正在等待响应… 200 OK
长度:14591852(14M)[应用程序/ x-xz]
保存到:“ node-v12.16.1-linux-x64.tar.xz”

node-v12.16.1-linux-x64.tar.xz 100%[================================= ================================================== =======>] 13.92M –.- KB / s在0.05s

2020-02-23 10:59:58(272 MB / s)-保存了’node-v12.16.1-linux-x64.tar.xz'[14591852/14591852]

下载13.92 MB文件花费了0.05秒。现在,让我们尝试将速度限制为500K.

[受电子邮件保护]:〜#wget –limit-rate = 500k https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
–2020-02-23 11:00:18– https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
正在解析nodejs.org(nodejs.org)… 104.20.23.46,104.20.22.46,2606:4700:10 :: 6814:162e, …
正在连接到nodejs.org(nodejs.org)| 104.20.23.46 |:443 …已连接.
HTTP请求已发送,正在等待响应… 200 OK
长度:14591852(14M)[应用程序/ x-xz]
保存到:“ node-v12.16.1-linux-x64.tar.xz.1”

node-v12.16.1-linux-x64.tar.xz.1 100%[================================ ================================================== =========>]在28秒内达到1392万501KB / s

2020-02-23 11:00:46(500 KB / s)-保存了’node-v12.16.1-linux-x64.tar.xz.1′[14591852/14591852]

减少带宽花费了更长的时间-28秒。想象一下,您的用户抱怨下载速度慢,并且您知道他们的网络带宽很低。您可以快速尝试–limit-rate模拟问题.

在后台下载

下载大文件可能要花一些时间,也可能需要上面的示例来设置速率限制。这是预期的,但是如果您不想凝视终端,该怎么办?

好了,您可以使用-b参数在后台启动wget.

[受电子邮件保护]:〜#wget -b https://slack.com
继续在背景下,pid 25430.
输出将被写入“ wget-log.1”.
[受电子邮件保护]:〜#

忽略证书错误

当您需要检查没有适当证书的Intranet Web应用程序时,这非常方便。默认情况下,当证书无效时,wget将引发错误.

[受电子邮件保护]:〜#wget https://expired.badssl.com/
–2020-02-23 11:24:59– https://expired.badssl.com/
正在解析expired.badssl.com(expired.badssl.com)… 104.154.89.105
正在连接到expired.badssl.com(expired.badssl.com)| 104.154.89.105 |:443 …已连接.
错误:无法验证expired.badssl.com的证书,由“ CN = COMODO RSA域验证安全服务器CA,O = COMODO CA Limited,L = Salford,ST =大曼彻斯特,C = GB”颁发:
颁发的证书已过期.
要不安全地连接到expired.badssl.com,请使用`–no-check-certificate’.

上面的示例适用于cert过期的URL。如您所见,建议使用–no-check-certificate,它将忽略任何证书验证.

[受电子邮件保护]:〜#wget https://untrusted-root.badssl.com/ –no-check-certificate
–2020-02-23 11:33:45– https://untrusted-root.badssl.com/
正在解析untrusted-root.badssl.com(untrusted-root.badssl.com)… 104.154.89.105
正在连接至untrusted-root.badssl.com(untrusted-root.badssl.com)| 104.154.89.105 | :: 443 …已连接.
警告:无法验证由“ CN = BadSSL不受信任的根证书颁发机构,O = BadSSL,L = San Francisco,ST = California,C = US”颁发的untrusted-root.badssl.com的证书:
遇到自签名证书.
HTTP请求已发送,正在等待响应… 200 OK
长度:600 [text / html]
保存到:“ index.html.6”

index.html.6 100%[========================================== =================================================>] 600 –.- KB / s in 0s

2020-02-23 11:33:45(122 MB / s)-保存了“ index.html.6” [600/600]

[受电子邮件保护]:〜#

很好,不是吗?

HTTP响应头

在终端上查看给定站点的HTTP响应标头.

使用-S将打印标题,如下所示 Coursera.

[受电子邮件保护]:〜#wget https://www.coursera.org -S
–2020-02-23 11:47:01– https://www.coursera.org/
正在解析www.coursera.org(www.coursera.org)… 13.224.241.48、13.224.241.124、13.224.241.82, …
正在连接到www.coursera.org(www.coursera.org)| 13.224.241.48 |:443 …已连接.
HTTP请求已发送,正在等待响应…
HTTP / 1.1 200 OK
内容类型:text / html
内容长度:511551
连接:保持活动状态
缓存控制:私有,无缓存,无存储,必须重新验证,max-age = 0
日期:2020年2月23日,星期日,格林尼治标准时间
etag:W /"7156d-WcZHnHFl4b4aDOL4ZSrXP0iBX3o"
服务器:特使
Set-Cookie:CSRF3-Token = 1583322421.s1b4QL6OXSUGHnRI;最大年龄= 864000; Expires = Wed,2020年3月4日11:47:02 GMT;路径= /; Domain = .coursera.org
Set-Cookie:__204u = 9205355775-1582458421174;最大年龄= 31536000; Expires = 2021年2月22日星期一,格林尼治标准时间;路径= /; Domain = .coursera.org
严格的运输安全性:max-age = 31536000; includeSubDomains;预载
X-Content-Type-Options:nosniff
x-coursera-render-mode:html
x-coursera-render-version:第2版
X-Coursera-Request-Id:NCnPPlYyEeqfcxIHPk5Gqw
X-Coursera-Trace-Id-Hex:a5ef7028d77ae8f8
x-envoy-上游服务时间:1090
X-Frame-Options:SAMEORIGIN
x-powered by:快递
X-XSS-Protection:1;模式=阻止
X-Cache:Cloudfront小姐
通过:1.1 884d101a3faeefd4fb32a5d2a8a076b7.cloudfront.net(CloudFront)
X-Amz-Cf-Pop:LHR62-C3
X-Amz-Cf-Id:vqvX6ZUQgtZAde62t7qjafIAqHXQ8BLAv8UhkPHwyTMpvH617yeIbQ ==
长度:511551(500K)[text / html]

操纵用户代理

在某些情况下,您想使用自定义用户代理连接站点。或特定浏览器的用户代理。这可以通过指定–user-agent来实现。以下示例适用于作为MyCustomUserAgent的用户代理.

[受电子邮件保护]:〜#wget https://gf.dev –user-agent ="MyCustomUserAgent"

主机头

当应用程序仍在开发中时,您可能没有正确的URL来对其进行测试。或者,您可能想使用IP测试单个HTTP实例,但是您需要提供主机标头才能使应用程序正常工作。在这种情况下,–header会很有用.

让我们以使用主机标头为application.com的http://10.10.10.1测试为例

wget –header ="主持人:application.com" http://10.10.10.1

不仅是主机,还可以注入任何您喜欢的标头.

使用代理连接

如果您在DMZ环境中工作,则可能无法访问Internet站点。但是您可以利用代理进行连接.

wget -e use_proxy =是http_proxy = $ PROXYHOST:PORT http://externalsite.com

不要忘记用实际值更新$ PROXYHOST:PORT变量.

使用特定的TLS协议进行连接

通常,我建议使用OpenSSL测试TLS协议。但是,您也可以使用wget.

wget –secure-protocol = TLSv1_2 https://example.com

以上将强制wget通过TLS 1.2连接.

结论

知道必要的命令可以帮助您工作。我希望以上内容使您对使用wget可以做什么有一个了解.

标记:

  • 的Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map