Linux:通过shell批量ping网站、ip延迟
来源:互联网 发布:我本知这世界 编辑:程序博客网 时间:2024/04/27 06:30
也许大家在使用Linux系统的时候也会遇到需要使用ping命令批量检查一批ip地址或网址的时候。博主我就在学习Linux系统的时候遇到这这样的问题——找谷歌速度比较快的IP地址。在查阅了一些资料后终于搞定了如何批量ping的方法,所以今天就和大家分享一下在Linux环境下通过简单几行shell来批量ping IP地址。
代码
先不啰嗦直接上代码和用法
#!/bin/bashpingfile=ip.txtrm -rf info.txtfor i in `cat $pingfile`do echo "`curl ip.cn?ip=$i` `ping $i -c 4 | grep avg | gawk -F / '{print $5}'`" >> info.txtdone
- 使用时将代码保存至
ping.sh
- 将IP地址按照每行一条的格式保存在
ip.txt
文件中并和ping.sh放在同一个文件夹中。 - 通过命令符(或给予ping.sh运行权限)输入
sh ping.sh
运行脚本 - 等待程序运行完毕后在在文件夹中寻找
info.txt
查看结果。
分析一下代码
对于想要知道这几行代码干了什么的同学咱们一起分析一下代码,欢迎朋友们留言交流。
#!/bin/bash
如果我们以可执行文件的方式执行我们的脚本,那么这行内容就告诉了系统使用bash终端来运行脚本
pingfile=ip.txt
为ip.txt指定变量名称,方便后面调用
rm -rf info.txt
为了避免之前运行过脚本,文件夹中已经有了info.txt这个文件,我们先执行一遍rm
命令删除文件
参数r
表示递归删除目录和目录中的内容,虽然删除的是文件不过这样保险一点。
参数f
表示忽略不存在的文件和参数,并且不作提示。
for i in `cat $pingfile`do ##这里的内容先省略##done
由for
do
done
组成的这部分是一个for循环体,cat
命令将 ip.txt( pingfile=ip.txt)文件中的内容取出来,每次循环for循环都会从中取出一行内容给i
,每次循环时i
等等于一条不同的ip地址。
echo "`curl ip.cn?ip=$i` `ping $i -c 4 | grep avg | gawk -F / '{print $5}'`" >> info.txt
接下来我们看看每次循环时做了那些事情。 echo
这个命令负责把它后面执行的一行结果显示出来。 >>
则把 echo 显示的每行内容输入添加到 info.txt 文件的最后一行。 curl
命令会访问后面的网址ip.cn?ip=$i
获取到IP($i
)的地理信息。结果类似于:
IP:8.8.8.8 来自:Google DNS
ping
命令会查询ip是否可以访问已经访问的延迟时间,我们加了一个参数 -c 4
表示每个地址测试4次并统计延迟。 |
会把 ping 命令执行的结果信息输入给后面的命令作为输入信息使用。
# ping输出的内容类似下面这样PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.64 bytes from 8.8.8.8: icmp_seq=1 ttl=252 time=213 ms64 bytes from 8.8.8.8: icmp_seq=2 ttl=252 time=195 ms64 bytes from 8.8.8.8: icmp_seq=3 ttl=252 time=189 ms64 bytes from 8.8.8.8: icmp_seq=4 ttl=252 time=194 ms--- 8.8.8.8 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3004msrtt min/avg/max/mdev = 189.851/198.460/213.928/9.190 ms
grep avg
会接收 ping 的结果作为它的输入内容,并从中找到有关键字avg的一行内容作为输出类似下面的内容,并传递给gawk
rtt min/avg/max/mdev = 189.851/198.460/213.928/9.190 ms
gawk
命令简单说可以将一行文本内容拆分成几段数据并且根据我们的需要排列和显示。我们这里使用-F /
参数指定以斜杠为分隔符,然后为我们输出第五段内容'{print $5}'也就是上例中
ping的平均值198.460
结合前面curl
命令执行后的内容我们可以知道echo
命令将要输出的内容是
IP:8.8.8.8 来自:Google DNS 180.026
参考内容
在我得到这个方法的时候受到了以下博文的帮助:
使用Linux批量Ping獲取延時信息
shell 编写脚本批量ping ip
- Linux:通过shell批量ping网站、ip延迟
- shell 编写脚本批量ping ip
- linux批量ping文件中的ip
- linux shell 批量mac ping脚本
- 使用shell脚本对IP进行批量测速(Ping)
- linux 自动ping ip的shell脚本
- 批量ping ip地址
- 批量ping域名获取ip
- linux 批量ping检测
- Linux下shell脚本PING命令只要延迟高于100ms就发送个邮件
- Linux ping ip命令
- linux shell ping外网
- 通过vpn和代理服务器两种方式fq之前和fq之后,通过ping方式,ping被fq的网站的ip地址,两者可以ping通吗?
- Linux下通过shell批量替换文件内容
- 命令行批量修改IP并ping测试
- 命令行批量修改IP并ping测试
- python批量ping内网ip
- Python中调用Ping命令,批量IP
- Java :参数数量可变的方法
- javaScript
- 一盆惨遭毒手的肉——记,那一次和小鲜肉的邂逅
- Java字符编码详解
- 利用JavaFX功能丰富Swing应用程序
- Linux:通过shell批量ping网站、ip延迟
- C++ 加载.ini配置文件方法
- 使用scrapy+IP代理+多线程爬虫对拉钩网在杭州互联网职位信息的抓取
- 动态注入Bean到Spring容器
- HDU 6136 优先队列 模拟
- rewrite 防盗链 和限制ip 访问
- Java线程并发干扰问题及解决方式(锁对象)
- JMeter和JMeterPlugin的下载安装
- PAT 乙级 1007