我有一个IP列表文件:iplistALL.txt
我要ping该列表中的所有ip并输出一个取名为neip的文件:iplistAVGT.txt
在iplistAVGT.txt内部,我只列出所有ping的ip和平均ping,每条ip均按平均时间从低到高的顺序排在一行上,并在最后超时。
请使用bash。
到目前为止,我做到了:
for i in `cat iplistALL.txt` ; do ping -c1 $i 2>&1 | tee >> ping-output.txt; done
但是我得到的信息太多了,我只想在一条线上输入ip和时间。也由于某种原因,最后一个被截断。而且它们没有按时间顺序列出
答案 0 :(得分:0)
假设您的ping-output.txt如下所示:
PING 10.0.0.1 (10.0.0.1): 56 data bytes
64 bytes from 10.0.0.1: icmp_seq=0 ttl=49 time=110.183 ms
--- 10.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 110.183/110.183/110.183/0.000 ms
PING 10.0.0.2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=48 time=106.966 ms
--- 10.0.0.2 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 106.966/106.966/106.966/0.000 ms
您可以使用awk来选择IP和平均往返时间,如下所示:
awk '
/ping statistics/ {
ip=$2
}
/round-trip/ {
split( $4, array, "/" )
print ip,array[2]
}' ping-output.txt
产生:
10.0.0.1 110.183
10.0.0.2 106.966