一、wget的用法
wget是一款广泛应用于类Unix系统和Linux系统的网络下载工具,其不仅能够方便地下载HTTP、HTTPS和FTP等多种协议的网络资源,还具备断点续传、递归下载和自动重试等功能特性,表现出高度的稳定性和灵活性。
1、基本语法
wget [option]... [URL]...
2、常用选项
-b:后台执行。如果没有通过-o指定输出文件,则输出将重定向到wget日志。
-o logfile:将所有消息记录到日志文件中。消息通常报告为标准错误。
-a logfile:消息追加到日志文件中。
-q:静默模式,不显示下载信息。
-c:断点续传。如果目标文件已经存在并且是一个不完整的下载,wget将从中断的地方继续下载,而不是重新开始。
-O file:将下载的内容保存为指定的文件名,而非URL中包含的文件名。
-r:启用递归检索,默认递归深度为5。
-l depth:指定递归最大深度。
-t number:指定重试次数,指定0或inf以进行无限重试。默认20次。但“连接被拒绝”或“找不到”(404)等致命错误除外,这些错误不会重试。
-T seconds:设置网络超时时间。这相当于同时指定–dns-timeout、–connect-timeout和–read-timeout。
-m:打开适合镜像的选项。此选项打开递归和时间戳,设置无限递归深度并保留FTP目录列表。它目前相当于-r -N -l inf –no-remove-listing。
–no-remove-listing:不要删除FTP检索生成的临时.listing文件。通常,这些文件包含从FTP服务器接收的原始目录列表。不删除它们可能有助于调试,或者当您希望能够轻松检查远程服务器目录的内容时(例如,验证您正在运行的镜像是否完整)。
-k:下载完成后,转换文档中的链接,使其适合本地查看。
示例:如果下载的文件/share/doc.html链接到/test/img.gif(或../test/img.gif),则doc.html中的链接将被修改为指向http://hostname/test/img.gif。
-p:下载正确显示给定HTML页面所需的所有文件。这包括诸如内联图像、声音和引用的样式表之类的东西。
-np:当递归检索时,永远不要上升到父目录。这是一个有用的选项,因为它保证只下载特定层次结构以下的文件。
–proxy-user=user –proxy-password=password:指定用于在代理服务器上进行身份验证的用户名和密码。
二、wget下载文件
使用wget命令,我们可以轻松地下载各种网络资源。无论是单个文件还是整个网站的内容,只需在命令行中输入相应的wget命令即可。
例如,要下载一个软件安装包,可以执行如下命令:
wget http://example.com/software.tar.gz
这将会将名为software.tar.gz的软件安装包下载到当前目录下。
如果安装包较大,在下载过程中遇到网络中断或其他问题导致下载失败,可以使用-c选项继续之前的下载:
wget -c http://example.com/software.tar.gz
如果需要下载整个网站的内容,可以使用递归下载选项:
wget -r http://example.com/
或者下载某个目录:
wget -r -np http://example.com/dir1/
三、curl的用法
curl是一种使用支持的协议(DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET和TFTP)从服务器传输数据或向服务器传输数据的工具。该命令被设计为在没有用户交互的情况下工作。
curl提供了大量有用的技巧,如代理支持、用户身份验证、FTP上传、HTTP post、SSL连接、cookie、文件传输恢复、Metalink等。
curl命令用法
1、 基本语法
curl命令的基本语法是:
curl [options] [URL...]
其中,options是可选的参数,用于定制curl的行为;URL是要访问的网址,可以通过在大括号中写入元素集合,或通过中括号获得字母数字序列,来指定多个URL或URL的一部分,如:
http://example.com/vol[1-4]/part{a,b,c}.html
2、常用选项
curl提供了大量的选项,以下是一些常用的选项:
-X, –request
-H, –header
-d, –data 发送POST请求的数据体。
-o, –output
-s, –silent静默模式,不显示进度和错误消息。
-u, –user user:password 指定HTTP认证的用户名和密码。
-U, –proxy-user user:password:指定用于代理身份验证的用户名和密码。
-v, –verbose显示详细的调试信息。
-k, –insecure允许连接到SSL证书不受信任的服务器。
-I, –head:(I是字母i大写)仅显示请求头/文档信息。在FTP或FILE文件上使用时,curl仅显示文件大小和上次修改时间。
-L, –location:自动跟踪重定向。当使用身份验证时,curl只将其凭据发送到初始主机。
-h, –help:用法帮助。列出所有当前的命令行选项,并附有简短的说明。
日常使用示例
1、 发送GET请求
curl https://www.example.com
2、 发送POST请求,通过请求头设置post内容为json:
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://www.example.com/api
3、下载文件并保存到本地
curl -o output.txt https://www.example.com/file.txt
4、 使用HTTP认证
curl -u username:password https://www.example.com/protected
实战案例:借助curl为Spring Cloud Config编写配置加密与解密脚本
在微服务架构中,Spring Cloud Config作为一个配置中心,提供了对敏感信息的安全管理功能。通过curl命令,我们能够编写简洁高效的Shell脚本来远程调用Config Server的加密与解密API,从而保障配置数据的安全性和灵活性。
加密脚本示例:
#!/bin/bashcurl -X POST -H "Content-Type:text/plain" -u $SPRING_SECURITY_USER_NAME:$SPRING_SECURITY_USER_PASSWORD http://127.0.0.1:8888/encrypt -d $1
该脚本接收一个参数,参数值为待加密的文本。
解密脚本示例:
#!/bin/bashcurl -X POST -H "Content-Type: text/plain" -u $SPRING_SECURITY_USER_NAME:$SPRING_SECURITY_USER_PASSWORD http://127.0.0.1:8888/decrypt -d $1
该脚本接收一个参数,参数值为待解密的文本。
其中,SPRING_SECURITY_USER_NAME和SPRING_SECURITY_USER_PASSWORD是Spring Cloud Config Server中用于配置安全认证的用户名和密码的环境变量,这两个环境变量定义了访问Config Server时所需的基本认证凭据。当Config Server收到一个请求时,它会检查请求头中是否包含正确的认证信息,只有提供有效的认证信息才允许访问。