脚本自动ping检测网络情况

    在一个实际的集群中,可能有几十上百台服务器,每次自己检测集群健康状态时,一台服务器一台服务器检测,一个字母一个字母敲,我都累成狗 。鉴于此,写了一个小脚本,自动跑ping,减轻工作量,呀吼吼,爽歪歪。 跳跳  跳跳 
      For example..............
      This’s my test  environment..............
      cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.131 ceph-node1
192.168.200.130 ceph-node2
192.168.200.136 ceph-node3
解决思想(Trouble Shooting):提取这个文件中集群所有的ip地址形成一个单独的文件,在通过读取文件中的ip,自动跑ping...
两大难点:1.提取所有集群IP   2.读取文件中的ip

脚本如下:
#/bin/bash
cat /etc/hosts | grep -v 127 | grep -v :: | awk '{print $1}' >>  a.sh
while read line
do
     ping $line
done < a.sh

第一条提取所有的ip 统一放在a.sh中
下面全部是读取这里面的ip做ping.

缺点 :脚本可以考虑读取hosts文件中的IP,不需要在生成另外的ip地址文件在读取
           可以做做一个计数 ping_count ping几次自动跳转ping下一个ip。

           可以有更加人性话的交互,例如ping失败,会显示ping不同的主机名或IP.


改进:
#/bin/bash
cat /etc/hosts | grep -v 127 | grep -v :: | awk '{print $1}' >>  a.sh
while read line
do
     ping $line -c 3 | grep -q "ttl=" && echo "$line yes" || echo "$line no"
done < a.sh
通过修改do下面执行语句成功解决了上述第2.3问题,但是还是发现了一个的bug,每ping一次,生成的ip地址文件中都会重复增加集群地址,导致做了n倍的重复性工作,应该将a.sh改成覆盖,而不是追加。


最终:
#/bin/bash
cat /etc/hosts | grep -v 127 | grep -v :: | awk '{print $1}' >  a.sh
while read line
do
     ping $line -c 3 | grep -q "ttl=" && echo "$line yes" || echo "$line no"
done < a.sh

记录下自己写的第一个脚本的思考过程,哈哈哈哈哈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值