ping不通自己的ip地址_shell脚本:批量ping N个不连续的IP地址

序言:

Windows系统中批量ping地址时我们长用 PingInfoView工具,简单方便实用;而linux中想批量pingIP地址,就得使用脚本了,这里小编和大家分享一个ping脚本。首先奉上shell脚本,不想编写的可以点击文末“ ”下载ping.sh文件(提取码:tj3v),直接拷贝到centos中运行。

#! /bin/bash

for i in `cat iplist`

do

ping=`ping -c 3 $i|grep loss|awk '{print $6}'|awk -F "%" '{print $1}'`

if [ $ping -eq 0  ];then

echo ping $i ok 

else

echo ping $i fail

fi

done

0ba456ce9b7978262173d756c1d43e77.gif

c36b473ea39566f8f1b82dbffb1ae89f.png

命令解释:

1、ping.sh脚本和脚本中要读取IP地址的iplist文件在同一个目录。2、使用awk命令提取ping IP返回后丢失loss的百分比数字是100还是0。ping.sh脚本第4行详解:

9c56b46e4f0e598e5f69e9d9746aeaca.png

ps:这边因为-c 3是ping3个包,且不考虑有丢包的情况,也可以直接-c 1,直接ping 1个包。

3、if语句是比较awk取的值是否为0的,也有比较100的,理论是一样的。 但是我自己测试ping IP地址有3种返回值。第一种、网络正常,0%丢包。

14e409a422075996e112af164b7aed55.png

第6列awk命令提取的值为0第二种、网络不通,100%丢包。

2517f0fb60d839dd45c97ff48223a4ea.png

第6列awk命令提取的值为100第三种、网络不通,100%丢包,但中间多了2列参数。

e30a2e91d4bbffda84c193929cc30b37.png

第6列awk命令提取的值为+3
综上所述,awk命令第一次使用时取第6列值,且和数值0比较(if=0网络ok,else网络fail),前面两种是没问题,遇到第3种情况:+3是≠0的,满足else条件,网络fail;
      若awk取值与100比较(if=100网络fail,else网络ok),前面两种是没问题,那么遇到第三种结果为:+3≠100,所以满足else结果,网络ok,但其实上图的192.168.3.254是ping不通的。 结论:所以if语句应该和数值0比较,这样更准确。

e7b1df45c8ca3a9488c3a10b25ea9432.gif

d0c1a81c9452ec6d82f1d889e55d6d58.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值