wget命令的使用

本文最后更新于2016年3月11日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

今天在服务器上批量下载文件的时候用到了wget命令,期间碰到了一些小问题,在解决这些问题的过程中总结了一些常用的wget命令选项,分别应对不同的场景,在此记录一下,方便后期查阅。

参考说明:
wget -O save_file_name $URL  #设置下载文件保存在本地的名字

wget -i download_list.txt   #(批量)下载文件中出现的目标列表

wget --no-clobber $URL      #(-nc)拒绝下载同一文件

wget --timestamping $URL    #(-N)开启时间戳机制,wget会下载远程时间戳更新的文件

wget -c $URL_old    #断点续传,继续下载

wget -b $URL        #后台下载

wget --timeout=5 $URL   #设置超时时间

wget --limit-rate=100k $URL     #限制下载速度

wget --wait=20 --limit-rate=20K $URL
wget --random-wait --limit-rate=20K

wget --http-user=narad --http-password=password $URL
wget --ftp-user=narad --ftp-password=password $URL

wget --no-check-certificate $URL    #用于下载HTTPS链接

wget -U Mozilla $URL    #手动设置User-Agent

其中的「-nc」选项对于某些场景来说非常实用:可以避免重复下载!

在不知道这个选项之前,我自己都是这么用的:

# 对 wget 的简单封装,避免重复下载
function download() {
    if [[ -f ${1##*/} ]]; then
        :
    else
        wget $1
    fi
}

还有「-N」选项,使用时间戳机制,在远程文件时间戳更新的情况下进行下载;之前我是通过curl命令先查询远程文件的大小和本地已下载文件的大小进行比对,存在差异时才进行更新(个人感觉这个应该要比wget命令的「-N」选项要准确些),之前在文章「如何实时更新一些数据文件?」中有过说明:

oldSize=`ls -l qqwry.dat.zip | awk '{print $5}'`
newSize=`curl -s -I http://www.newxing.com/D6C47427E608/qqwry.dat | grep Content-Length`
if [$oldSize != $newSize];then	#这里其实既可以作为字符串比较也可以作为数字进行比较{只要两者不同即可}
	wget -O qqwry.dat.zip http://www.newxing.com/D6C47427E608/qqwry.dat
	unzip -o qqwry.dat.zip
fi

常用的wget命令还有很多的「黑科技」,大家可以根据自身的实际需求进行挖掘、使用。

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2639.html

《wget命令的使用》上的5个想法

  1. wget 结合 df 根据磁盘空间决定是否继续下载
    http://www.factj.com/archives/792.html
    `
    for U in `cat seeds/filelist`;do
    if [ `df -h | grep 20G | awk ‘{print $5}’ | awk -F% ‘{if($1>90){print “A”}else{print “B”}}’`”x” = “Bx” ];then
    wget -c “$U” –content-disposition
    fi
    done
    `

  2. GNU Wget 安全漏洞预警
    https://mp.weixin.qq.com/s/uhwDZx_Tci1D9tXEk-vmCA
    https://www.viestintavirasto.fi/en/cybersecurity/vulnerabilities/2017/haavoittuvuus-2017-037.html
    `
    2017年10月26日,GNU Wget发布了1.19.2之前版本的缓冲区溢出漏洞公告,存在漏洞的wget可能受到恶意HTTP响应攻击,导致拒绝服务和恶意代码执行。
    目前网上已经有该漏洞细节和测试代码,建议尽快更新到新的版本和参考其他缓解措施。
    `
    汇集各发行版安全公告列表:
    https://security.archlinux.org/CVE-2017-13089
    https://security.archlinux.org/CVE-2017-13090

  3. 如何用nc创建一个临时Web服务
    `
    步骤①监听端口
    [root@sec-test ~]# nc -lk 8080

    步骤②发送数据
    [ixyzero@localhost ~]$ curl -X POST http://192.168.241.17:8080/ -d “user=hi”
    [ixyzero@localhost ~]$ curl -X GET http://192.168.241.17:8080/users?a=xxx

    步骤③检查发送的数据
    [root@sec-test ~]# nc -lk 8080
    POST / HTTP/1.1
    Host: 192.168.241.17:8080
    User-Agent: curl/7.54.0
    Accept: */*
    Content-Length: 7
    Content-Type: application/x-www-form-urlencoded

    user=hi

    GET /users?a=xxx HTTP/1.1
    Host: 192.168.241.17:8080
    User-Agent: curl/7.54.0
    Accept: */*
    `

发表评论

电子邮件地址不会被公开。 必填项已用*标注