是否会使用 vpn 工作,已经成为魔法师和麻瓜之间最重要的区分。使用 vpn 工作,也产生了其它一些奇奇怪怪的问题,比如,选择 vpn 服务器。

你要测试哪个 vpn 离你最近。

所以,就有了下面的脚本,毕竟一个个手动的 ping 有点麻烦。每次换 vpn 供应商,就得重新选一次。

ADDRESS=`awk '/^__ADDRESS_BELOW__/ {print NR + 1; exit 0; }' "$0"`

tail -n+$ADDRESS "$0"| while read x ; do echo `ping -c  $x | awk -F '[ /]' 'NR==1 {ip=$2} $1=="3" {print ip,$10}'` & done | sort -n -k2
exit __ADDRESS_BELOW__
server1
server2
server3
server4

server1,server2,server3...是服务器列表,域名或者 ip。

除了换 address_list 以外,根据设备的不同,ping 的输出也不一样,所以,还需要调整 $1=="3" {print ip,$10}' 这里的参数。我这里,ping 的结果如下:

ping -c 3 www.baidu.com
PING www.a.shifen.com (183.232.231.172) 56(84) bytes of data.
64 bytes from 183.232.231.172: icmp_req=1 ttl=54 time=36.8 ms
64 bytes from 183.232.231.172: icmp_req=2 ttl=54 time=38.7 ms
64 bytes from 183.232.231.172: icmp_req=3 ttl=54 time=38.3 ms --- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 10109ms
rtt min/avg/max/mdev = 36.862/37.996/38.737/0.814 ms

即,当 $1="3"时,为结果行; 此时,$10 是总耗时。因为已经指定空格为间隔符,$1 表示空格隔开的 section 中的第 1 个 section;以此类推,$10 是第 10 个。根据 ping 版本不同,这里做筛选的条件也不同。

想多学点 awk,可以戳 《awk 简明教程》。

最新文章

  1. 【UE4游戏开发】安装UE4时报SU-PQR1603错误的解决方法
  2. Oracel EBS - Response
  3. Ubuntu 16.04 Steam
  4. left join 取一条数据
  5. git 操作简明扼要,命令不需要多,够用就行
  6. Linux设置ssh无密码登陆
  7. POJ 1836 Alignment
  8. show master status empty解决方案
  9. ireport制作小技巧
  10. MYSQL 学习笔记1 -----mysqladmin -uroot -p status|extended-status
  11. This configuration file was broken by system-config-keyboard
  12. LayerDrawable 资源
  13. TCP/IP之TCP连接的建立与中止状态分析
  14. C#利用Lambda和Expression实现数据的动态绑定
  15. 我的java学习笔记(一)
  16. hdu_1573 X问题(不互素的中国剩余定理)
  17. SAP abap 语句、命令 语法查询备用
  18. Ubuntu18.04安装Guake下拉式终端
  19. kafka NoNode错误
  20. (转)MYSQL远程登录权限设置

热门文章

  1. [Android Pro] 开发一流的 Android SDK:Fabric SDK 的创建经验
  2. Java Callable接口、Runable接口、Future接口
  3. 程序中try、throw、catch三者之间的关系
  4. 使用samba进行共享文件操作步骤
  5. ASP.NET MVC:UrlHelper.cs
  6. Qt解决:Qobject::connect queue arguments of type ‘xxxx’,Make sure ‘xxxx’ is registered using qRegister
  7. SharePoint 2013 开启访问请求 链接丢失
  8. System.Diagnostics.Debug和System.Diagnostics.Trace
  9. SpringBoot整合Quartz定时任务 的简单实例 2
  10. Druid连接池简介和配置