使用shell脚本对IP进行批量测速(Ping)

因为众所周知的原因,很多人需要在多个IP的国外服务器列表中,找到一个最快的IP来连接。

按最水的方法,一定是一个一个ping一下,看看哪个快,但几十个IP,你能看得过来么?

最近要面试,既然如此,就试着着一个使用linux下小工具实现的批量ping软件吧~


1. 提取IP

假如某网页下的IP是表格形式,某一列为IP,则可以使用awk来提取:

awk 'NR > 1 {print $3}' ip.txt
意思是从第二行开始,打印每行的第三列内容。awk简易教程可以看这里: AWK简明教程


2. 从ping 某一个IP提取时间

ping -c 3 baidu.com | awk -F '[ /]' 'NR==1 {ip=$2} $1=="round-trip" {print ip,$8}'

会得到这样的结果:

baidu.com 56.284

ping -c 表示ping 3次。

awk命令,设置分隔为空格和/;当行数为1时(首行)提取第二格内容保存至ip变量;当每行中第一列为"round-trip"时,输出ip和第8格(即平均时长)


3. 并行ping

 | while read x ; do ping -c 3 $x & done

& 符号将此任务作为后台程序


4. 排序,将第二列以数字方式排序:

sort -n -k2


总的代码:

cat  ip.txt |  awk 'NR > 1 {print $3}'| while read x ; do echo `ping -c 3 $x | awk -F '[ /]' 'NR==1 {ip=$2} $1=="round-trip" {print ip,$8}'` & done | sort -n -k2


好吧,好长,可能写成多个命令会更容易理解些

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestBandwitdth脚本用于测试带宽; //***************************************************************************************** 用法: 1.将“TestBandwidth.tar.gz”脚本copy到服务器上解压后,进入目录; 2.编辑“TestURL.sh”:灌流量; 上行:wget http://*** 下行:post http://*** 3.如果修改了步骤2,执行此步,否则跳过: 修改 TestBandwidth.tar.gz 脚本中的倒数5-6行; kill -9 `ps -ef|grep wget|grep http|awk '{print $2}'` //修改kill关键字:grep wget rm zhuxian* //修改rm关键字:zhuxian* 4.修改“bandwidth.sh”:修改检测网卡: netcard=em1 5.使用后台运行命令执行:nohup ./bandwidth.sh (注:停止脚本 pkill -9 bandwidth.sh && pkill -9 wget) 6.查看结果:BandwitdthResult.txt //********************************************************* 测试流量:清空“TestURL.sh”文件时执行就是测试流量 //***************************************************************************************** 脚本说明: 1.调用TestURL.sh脚本启动灌流量操作; 2.等待10s(防止刚开始下载时的流量冲高); 3.取当前网卡已接收的上行、下行数据流量; 4.等待5s; 5.取当前网卡已接收的上行、下行数据流量; 6.计算两次取值中间的差值,算平均值; 7.等待10s,开始下一次小循环(循环4次)(一次小循环70s); 8.清除下载进程,清除下载文件,清除下载日志; 9.等待3495s,开始下一次大循环(一次大循环1h);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值