Shell脚本快速查看网段内ip占用情况和可用ip

1 篇文章 0 订阅

1.发现问题

今天在学习的时候突然有一个想法,想要看一下自己教室网段内的ip占用情况,如果一个一个的IP去ping的话会花费大量时间于是自己尝试用shell脚本来解决这个问题.

需求:

我的ip是192.168.22.122,我想要查看22网段下所有的ip使用情况、是否有人在使用某些ip、是否可以ping通该网段的所有ip.

2.编程思想

1.基于:ping 192.168.22.xxx 来获取相应的返回情况。
我使用的是centos7的虚拟机桥接模式.
成功返回:
64 bytes from 192.168.22.121: icmp_seq=1 ttl=128 time=1.50 ms
失败返回:
From 192.168.22.80 icmp_seq=1 Destination Host Unreachable
如果成功的话,返回的字符串中会带有"ttl"字符串,所以可以依据这个来作为是否ping通的判断条件。
2. shell的循环
用For循环和while do 循环都可以,需要让变量$i 从0-255即可
3. shell的多线程
再结合了上面两个方法以后,发现255个ip一个一个ping还是很慢,所以就想到了多线程的方法,把1次运行ping和判断调用1个线程,一共使用255个线程,速度是真滴快.

3.代码

#!/bin/bash
star=`date +%s`
echo "*********Running...**********"
for ((i = 0; i <= 255; i++))
do
{
       ping 192.168.22.$i -c 2 |grep -q "ttl=" && echo "192.168.22.$i yes" >> ipyes.txt || echo "192.168.22.$i no" >> ipno.txt
}&
done
wait

end=`date +%s`
echo $end
echo "*************Spent Time:`expr $end - $star `**************"
  • 结果
    我将结果重定向到了两个文件ipyes 和 ipno 中,yes为正在占用的ip,no未未在使用的ip.
  • 使用方法
    vim 一个shell脚本,粘贴代码,然后将ip改成自己的网段就行,sh 运行脚本.

4.运行截图

shell脚本
脚本
在这里插入图片描述
运行情况
在这里插入图片描述
运行结果
十几秒秒就可以ping完网段下所有ip,并把结果写在文档里,够快吧,嘿嘿

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值