Shell脚本 利用ARP扫描网段在线主机

(脚本默认网段掩码为24,也没有参数检查之类的功能)

(不同平台命令语句会有差别,可能需要稍微修改,测试平台是Kali)

#!/bin/bash
## 保证参数个数正确
if [ "$#" -ne 1 ];then  ##"$#" 参数个数 ##[Int1 -ne Int2] 比较Int1和Int2值,不等为真 
	echo "参数错误:请使用 ./scan_arp.sh [interface]"  ##scan_arp.sh是脚本文件名,这里仅仅是提示作用
	echo "如./scan_arp.sh wlan0"
	exit
fi

## 根据输入的网卡名查询IP
## 先筛选出含"inet"的行;然后以‘t’隔开,选取隔开后第二个域;再以'.'隔开,选取第1-3个域,也就是IP地址前24位;最后选取第一行(可能会有IPv6地址也被筛出)
interface=$1 ##$1 运行脚本时输入的第一个参数
prefix=$(ifconfig $interface | grep "inet" | cut -d 't' -f 2 | cut -d '.' -f 1-3 | head -n 1)


echo "================================================================================"
echo "网段是:"$prefix
echo "================================================================================"

## 默认掩码24,遍历扫描
for addr in $(seq 1 254);do
	ans=$(arping -c 1 $prefix.$addr |grep "bytes from" | cut -d" " -f 5 | cut -d "(" -f 2 | cut -d ")" -f 1)
	## 有回复的ARP包则会有"bytes from"字段,根据这个判断是否在线
	if [ -n "$ans" ];then  ##[-n str] 判断str长度,非零为真;[-z str] 判断str长度,零为真
		echo $ans":在线!"
	else
		echo $prefix.$addr":离线."
	fi
done

运行样例:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值