• wget 下载工具

wget 是Linux系统最常用的工具之一,命令行方式的多功能下载工具,支持HTTP,HTTPS和FTP协议。

参数介绍:
# 只介绍最常用的参数
# 如果提示命令不存在,那么使用 yum install wget -y / apt-get install wget -y 来安装(有一些非常精简的系统可能会没装)
 
-b :启动后,后台下载
-q :安静模式(不输出任何信息)
-c :断点续传下载文件
-O :指定下载后的文件名(可使用绝对路径目录+文件名)
-P :指定下载后的文件目录(-P只能指定下载目录,并不能指定文件名)
-t :设置重试次数(0代表无限)
-T :设置超时时间(单位:秒)
-N :只获取比本地新的文件(新的覆盖旧的)
-4 :仅连接至 IPv4地址
-6 :仅连接至 IPv6地址
--limit-rate=xxxk :限制下载速度(k代表KB/S)
--post-data :通过POST方式发送数据
--no-check-certificate :不验证服务器的SSL证书
 
# 更多的命令可以用 wget --help 来查看。


使用示例:
# 下载一个文件到当前目录
wget https://softs.pw/100MB.bin
 
# 下载文件到当前目录并重命名为 200MB.bin
wget -O "200MB.bin" https://softs.pw/100MB.bin
 
# 下载文件到 /root目录(-P只能指定下载目录,并不能指定文件名)
wget -P "/root" https://softs.pw/100MB.bin
 
# 下载文件到 /root/doubi目录并重命名为 200MB.bin
wget -O "/root/doubi/200MB.bin" https://softs.pw/100MB.bin
 
# 下载文件完成之前 wget进程结束了,那么可以使用断点续传重新下载中断的文件(前提是下载服务器支持断点续传)
wget -c 
 # 通过后台下载文件到 /root/doubi目录并重命名为 200MB.bin
wget -b -O "/root/doubi/200MB.bin" 
# Continuing in background, pid 2333.
# Output will be written to `wget-log'.
# 后台下后,你可以使用以下命令来查看下载进度:
tail -f wget-log
 
# 有时候一些Linux系统中的SSL证书不完整,会导致下载一些 HTTPS网站文件的时候会验证SSL证书失败,可以这样做
# 不验证服务器SSL证书,下载文件到当前目录并重命名为 200MB.bin
wget --no-check-certificate -O "200MB.bin" https://softs.pw/100MB.bin
 
# 使用wget发送POST请求数据
wget --post-data "user=doubi&passwd=23333" https://xxx.xx/
 
# 下载文件到当前目录 并仅通过IPv4连接 只获取比本地新的文件,限速 200KB/S
wget --limit-rate=200k -N -4 https://softs.pw/100MB.bin
 
# 下载文件到当前目录 并重试次数为 1,超时时间为 2秒
wget -t1 -T2 https://softs.pw/100MB.bin
 
# 通过 wget来获取服务器的外网IP(-qO- 代表运行完会输出下载的信息,并不会保存到本地文件)
wget -qO- ipinfo.io/ip
 
# 更多的命令可以用 wget --help 来查看。
  • curl 下载工具

curl是Linux系统一个利用URL规则在命令行下工作的文件传输工具,是一款很强大的HTTP命令行工具。它支持文件的上传和下载,是综合传输工具,但习惯称curl为下载工具。

参数介绍:

# 只介绍最常用的参数
# 如果提示命令不存在,那么使用 yum install curl -y / apt-get install curl -y 来安装(有一些非常精简的系统可能会没装)
 
-s :安静模式(不会输出任何信息)
-C :断点续传下载文件
-o :输出写入到文件中
-O :输出写入到文件,文件名为 远程文件的名称
-k :不验证服务器SSL证书
-T :上传文件
-4 :仅连接至 IPv4地址
-6 :仅连接至 IPv6地址
-m :设置传输总时间(单位:秒)
--retry :设置重试次数
--data :通过POST方式发送数据
--limit-rate xxxK :限制下载速度(K代表KB/S)
 
# 更多的命令可以用 curl --help 来查看。
使用示例:
# 获取当前服务器的外网IP
curl ipinfo.io/ip
 
# 获取一个文件保存到当前目录中
wget -O https://softs.pw/Bash/***.sh
 
# 获取一个文件保存到 /root/doubi目录中 并修改文件名为 233.sh
curl -o "/root/doubi/233.sh" https://softs.pw/Bash/***.sh
 
# 下载文件完成之前 curl进程结束了,那么可以使用断点续传重新下载中断的文件(前提是下载服务器支持断点续传)
curl -C -O https://softs.pw/100MB.bin
 
# 有时候一些Linux系统中的SSL证书不完整,会导致访问/下载一些 HTTPS网站/文件的时候会验证SSL证书失败,可以这样做
# 不验证服务器SSL证书,下载文件到当前目录并重命名为 233.sh
curl -k -o "233.sh" https://softs.pw/Bash/***.sh
 
# 使用curl发送GET请求数据
curl https://xxx.xx/?user=doubi
 
# 使用curl发送POST请求数据
curl --data "user=doubi&passwd=23333" https://xxx.xx/
 
# 下载文件到当前目录 并仅通过IPv4连接,限速 200KB/S
curl --limit-rate 200K -4 https://softs.pw/100MB.bin
 
# 下载文件到当前目录 并重试次数为 1,超时时间为 2秒
curl --retry 1 -m 10 https://softs.pw/100MB.bin
 
# 更多的命令可以用 curl --help 来查看。


  • netstat 查看链接和端口监听等信息

参数介绍:
-n :不显示别名(主机名/域名以 数字或IP显示)
-e :显示其他/更多信息
-p :显示进程PID/进程名
-c :持续输出(设置后会每隔 1秒输出一次,Ctrl+C 终止)
-l :显示正在监听的套接字
-a :显示全部信息
 
# 下面这些就不很常用了。
-r :显示路由表
-i :显示网络接口(网卡)
-g :显示多播组信息
-s :显示网络统计
-M :显示伪装连接
-v :显示正在进行的工作
 
# 更多的命令可以用 netstat --help 来查看。
使用示例:
# 显示当前服务器的所有连接信息
netstat -a
 
# 显示当前服务器的所有 TCP连接信息
netstat -at
 
# 显示当前服务器的所有 UDP连接信息
netstat -au
一般来说经常使用这个命令:
# 显示当前服务器的所有正在监听 TCP端口的信息,并且 显示进程PID和进程名,但不显示别名(域名以IP显示),这个命令算是最常用的了。
netstat -lntp
 
# 输出示例
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80         0.0.0.0:*            LISTEN      14233/nginx.conf
tcp        0      0 0.0.0.0:22         0.0.0.0:*            LISTEN      1555/sshd       
tcp        0      0 0.0.0.0:443        0.0.0.0:*            LISTEN      14233/nginx.conf
tcp6        0      0 :::22            :::*                LISTEN      1555/sshd
# 显示监听 80端口的进程PID和进程名,grep是匹配并显示 符合关键词的行。
netstat -lntp|grep ":80"
 
# 输出示例
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State        PID/Program name
tcp        0      0 0.0.0.0:80         0.0.0.0:*               LISTEN      14233/nginx.conf
 
# 显示 ssh的监听情况,grep是匹配并显示 符合关键词的行。
netstat -lntp|grep "ssh"
 
# 输出示例
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22         0.0.0.0:*             LISTEN      1555/sshd
表头解释:
Proto :连接协议(tcp/udp是IPv4,tcp6/udp6是IPv6)
Recv-Q : 接收队列(基本都是0,如果不是代表堆积)
Send-Q :发送队列(基本都是0,如果不是代表堆积)
Local Address :本地地址和端口
Foreign Address :对外地址和端口
State :连接状态
PID/Program name :进程PID/进程名
# 每隔 1秒显示一次当前服务器的所有连接信息
netstat -c
 
# 每隔 1秒显示一次当前服务器的所有 TCP连接信息
netstat -ct
 
# 每隔 1秒显示一次当前服务器的所有 UDP连接信息
netstat -cu
 
# 显示当前服务器的路由表
netstat -r
 
# 显示当前服务器的网络接口信息(网卡)
netstat -i
 
# 显示当前服务器的网络统计信息
netstat -s
 
# 更多的命令可以用 netstat --help 来查看。
在使用 netstat命令中,会显示一些连接状态,下面是各状态的意思:
LISTEN
# 监听来自远程连接的 TCP端口连接请求
SYN-SENT
# 在发送连接请求后,等待匹配的连接请求
SYN-RECEIVED
# 在收到和发送一个连接请求后,等待对方对连接请求的确认
ESTABLISHED
# 代表一个打开的连接
FIN-WAIT-1
# 等待远程 TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2
# 从远程 TCP等待连接中断请求 
CLOSE-WAIT
# 等待从本地用户发来的连接中断请求 
CLOSING
# 等待远程TCP对连接中断的确认 
LAST-ACK
# 等待原来的发向远程TCP的连接中断请求的确认 
TIME-WAIT
# 等待足够的时间,以确保远程TCP接收到连接中断请求的确认 
CLOSED
# 没有任何连接状态(或者关闭了连接)