暫時先拿到一堆測速地址測試用
ips=(fra-de-ping.vultr.com ams-nl-ping.vultr.com par-fr-ping.vultr.com lon-gb-ping.vultr.com sgp-ping.vultr.com hnd-jp-ping.vultr.com nj-us-ping.vultr.com tor-ca-ping.vultr.com il-us-ping.vultr.com ga-us-ping.vultr.com wa-us-ping.vultr.com fl-us-ping.vultr.com tx-us-ping.vultr.com sjo-ca-us-ping.vultr.com lax-ca-us-ping.vultr.com syd-au-ping.vultr.com sel-kor-ping.vultr.com)
定義一個 ping次數(shù)變量岭埠,要求必須是數(shù)字桥狡,大于0
times=$1
if [ "$times" -gt 0 ] 2>/dev/null; then
echo "執(zhí)行 ${times} 次ping"
else
echo "請在腳本后輸入需要ping的次數(shù)凛忿,大于0"
exit 0
fi
一個執(zhí)行ping的函數(shù)
-
ping
-c 執(zhí)行次數(shù) -
echo $aaa/"$aaa"
直接echo
會忽略變量中的換行符,變成一行輸出;變量加引號可原樣輸出變量內(nèi)容
# 函數(shù)第一個參數(shù)傳入 要被 Ping的地址
DoPing(){
# 收集到ping命令最后三行的匯總結(jié)果
res=$( ping -c $times $1 | grep "rtt min/avg/max/mdev" -B 2 )
# 結(jié)果異步匯總到 log文件
echo $res >> ./result.log
}
循環(huán)執(zhí)行
for ip in ${ips[*]}
do
DoPing $ip &
done
echo "命令執(zhí)行完畢,等待結(jié)果.."
等待異步執(zhí)行完畢
num=0
for pid in $(jobs -p)
do
wait $pid
let num+=1
echo -n "${num} "
if [ $num == 17 ]
then
# 格式化一個結(jié)果表頭
printf "\n%-36s %4s %10s %21s\n" "address" "loss" "time" "min/avg/max/mdev"
# 輸出結(jié)果 按總耗時順序排序
cat ./result.log | awk '{printf "%-30s %10s %10s %34s\n",$2,$11,$15,$19}' | sort -n -k3
rm ./result.log
fi
done
https://github.com/Saopanda/duoPing/blob/main/README.md
vultr邀請鏈接:
10刀長期
https://www.vultr.com/?ref=7001033
100刀有效期1個月
https://www.vultr.com/?ref=8490185-6G