也许大家在使用Linux系统的时候也会遇到需要使用ping命令批量检查一批ip地址或网址的时候。博主我就在学习Linux系统的时候遇到这这样的问题——找谷歌速度比较快的IP地址。在查阅了一些资料后终于搞定了如何批量ping的方法,所以今天就和大家分享一下在Linux环境下通过简单几行shell来批量ping IP地址。

代码

先不啰嗦直接上代码和用法

#!/bin/bash
pingfile=ip.txt
rm -rf info.txt
for i in `cat $pingfile`
doecho "`curl ip.cn?ip=$i` `ping $i -c 4 | grep avg | gawk -F / '{print $5}'`" >> info.txt
done
  1. 使用时将代码保存至ping.sh
  2. 将IP地址按照每行一条的格式保存在ip.txt文件中并和ping.sh放在同一个文件夹中。
  3. 通过命令符(或给予ping.sh运行权限)输入sh ping.sh运行脚本
  4. 等待程序运行完毕后在在文件夹中寻找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 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=252 time=195 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=252 time=189 ms
64 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 3004ms
rtt 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延迟相关推荐

  1. shell 批量 ping 多个IP地址

    ping多个IP地址查看连接状态 1,系统环境 2,shell 脚本 1,系统环境 $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.6 Bu ...

  2. shell批量监控网站状态码

    shell批量监控网站状态码脚本,使用curl很慢.等我学完其他方式,在来更新. #!/bin/bash #GuoYabin yuming=`/bin/cat yuming.txt` for i in ...

  3. Linux服务器Shell批量巡检

    关键词:Linux shell 批量巡检 1.批量巡检流程 通过Linux shell脚本实现批量服务器巡检方案,通常脚本由三部分组成,包括: 巡检脚本(实现对性能信息或指标的采集与回传).巡检脚本下 ...

  4. python批量ping脚本_Python多线程批量Ping主机IP的脚本

    Python 编写多线程 Ping 主机IP的脚本 1. 先编写一个 Ping 主机IP的脚本 ping_ip.pyimport subprocess import time # 记录开始执行的时间 ...

  5. ip 地址 192.168.1.255 代表( )。_如何批量ping大量ip地址?一个软件搞定

    前面我们发布了关于如何快速ping完1000个ip地址的代码,有朋友反映使用代码ping有些麻烦,容易出错,有没有更简单方法,其实是有的,我们本期来看下,使用软件来轻松ping 大量的ip地址. 一. ...

  6. linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)...

    本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的 ...

  7. shell通过ping实现ip检测

    #!/bin/bash for i in `seq 2 254`do ping -w 1 $1.$i > /dev/null 2>&1if [

  8. Linux下 shell获取本机ip地址

    方法二 /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6 | awk '{print $2}' | tr -d "add ...

  9. python 批量ping_python实现本地批量ping多个IP

    本文主要利用python的相关模块进行批量ping ,测试IP连通性. 下面看具体代码(python3): #!/usr/bin/env python #-*-coding:utf-8-*- impo ...

最新文章

  1. 加权边界框融合(WBF)
  2. [YTU]_2622(B 虚拟继承(虚基类)-沙发床(改错题))
  3. 安卓进阶系列-04自定义原型图片显示(CircleImageView)的使用
  4. C#JsonConvert.DeserializeObject反序列化json字符
  5. @Resource VS @Autowired
  6. oracle之创建和管理表
  7. 机器学习问题总结(03)
  8. java list 初始化_Java面试大全(十)
  9. Linux系统下文件与目录操作讲解
  10. 计算机采用二进制无关,计算机为什么采用二进制?
  11. 魔兽怀旧服服务器怎么修改,魔兽世界怀旧服今日开服 魔兽世界怀旧服剥皮制皮玩法攻略 怀旧服服务器连不上怎么办?...
  12. 剑指offer T26 重排链表
  13. Python爬虫入门【6】:蜂鸟网图片爬取之一
  14. FPGA的NIOS-II开发入门
  15. php如何去重,php如何去除重复数据
  16. winhttp 与wininet的区别(一)
  17. 第五章总结(创建与使用视图)
  18. 2022年西藏最新八大员之(安全员)模拟试题题库及答案
  19. 月薪13k的腾讯测试岗,面试原来这么简单
  20. Android 上手机跟机顶盒应用开发的区别

热门文章

  1. ssm+mysql+ssm学生选课系统 毕业设计-附源码170920
  2. 站长在线python精讲:在Python中使用“+”运算符来拼接字符串详解
  3. 魔兽发信息给其他服务器的人,魔兽世界怀旧服:公会规矩是给外人定的?网友:真是毛人毛语!...
  4. 前端HTML5+CSS3
  5. 计算机怎样另存主页教程,怎么保存百度主页皮肤图片到本地电脑?
  6. Lua实战之洗牌算法
  7. vue中点击浏览器返回按钮,清除浏览器缓存信息
  8. 关于姜文如何请动葛优和发哥出演子弹
  9. 微信小程序使用腾讯IM
  10. markdown编辑器中可以使用的6种空格标记