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

来源:互联网 发布:2016it行业发展前景 编辑:程序博客网 时间:2024/04/23 21:05

因为众所周知的原因,很多人需要在多个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


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

0 0
原创粉丝点击