是否會使用 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 3 $x | awk -F '[ /]' 'NR==1 {ip=$2} $1=="3" {print ip,$10}'` & done | sort -n -k2 exit 0 __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 簡明教程》。