首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

shell脚本:批量ping N个不连续的IP地址

序言:

Windows系统中批量ping地址时我们长用PingInfoView工具,简单方便实用;而linux中想批量pingIP地址,就得使用脚本了,这里小编和大家分享一个ping脚本。

#! /bin/bash

for i in `cat iplist`

do

ping=`ping -c 3 $i|grep loss|awk ''|awk -F "%" ''`

if [ $ping -eq 0  ];then

echo ping $i ok

else

echo ping $i fail

fi

done

命令解释:

1、ping.sh脚本和脚本中要读取IP地址的iplist文件在同一个目录。

2、使用awk命令提取ping IP返回后丢失loss的百分比数字是100还是0。

ping.sh脚本第4行详解:

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

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

第一种、网络正常,0%丢包。

第6列awk命令提取的值为0

第二种、网络不通,100%丢包。

第6列awk命令提取的值为100

第三种、网络不通,100%丢包,但中间多了2列参数。

第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比较,这样更准确。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200825A02R7Z00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券