批量 ping 測試腳本(IP 掃描)


是否會使用 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 簡明教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM