一、这里大篇幅的代码是对输入的ip格式进行过滤,如果只考虑简单的扫描可以直接拉到最底。
只写开始扫描注释之后的代码
————————————
#/bin/bash
#Scan the surviving hosts in the current network segment
#Input scan_ip judgement
#对输入的IP格式进行过滤
while :
do
read -p "请输入您的IP网段(例如:“192.169.12.”):" scan_ip
if [ `echo "$scan_ip" | awk -F '.' '{print ($1)}'` -gt 1 ] && [ `echo "$scan_ip" | awk -F '.' '{print ($1)}'` -lt 255 ]
then
if [ `echo "$scan_ip" | awk -F '.' '{print ($2)}'` -gt 1 ] && [ `echo "$scan_ip" | awk -F '.' '{print ($2)}'` -lt 255 ]
then
if [ `echo "$scan_ip" | awk -F '.' '{print ($3)}'` -gt 1 ] && [ `echo "$scan_ip" | awk -F '.' '{print ($3)}'` -lt 255 ]
then
echo "OK"
break
else
echo "您输入的IP不合法"
fi
else
echo "您输入的IP不合法"
fi
else
echo "您输入的IP不合法"
fi
done
#把输入的IP格式进行二次规范
scan_ip="`echo $scan_ip | awk -F . '{print $1}'`.`echo $scan_ip | awk -F . '{print $2}'`.`echo $scan_ip | awk -F . '{print $3}'`."
echo $scan_ip
#输入查询IP上限,格式筛选
while :
do
read -p "请输入扫描的IP范围(最大IP):" max_ip
if [ $max_ip -gt 1 ] && [ $max_ip -lt 254 ]
then
break
else
echo "IP上限不合法!"
fi
done
#Input max_ip judgement
#输入查询IP下限,格式筛选
while :
do
read -p "请输入扫描的IP范围(最小IP):" min_ip
if [ $min_ip -gt 1 ] && [ $min_ip -lt 254 ]
then
break
else
echo "IP下限不合法!"
fi
done
#扫描并存入文件
echo "本网段存活主机的ip:" > ip.txt
for((i=$min_ip;i<=$max_ip;i++))
do
arping -c 1 $scan_ip$i
[ $? -eq 0 ] && echo $scan_ip$i >> ip.txt
[ $? -eq 0 ] && echo "$scan_ip$i,这个ip主机存活"
done
以上的脚本完整代码。
————————————————————————————————
# 方法二、这个脚本也可以简单的这样来编写,如下。
$scan_ip='192.168.12.'
echo "本网段存活主机的ip:" > ip.txt
for ((i=1;1<=254;i++))
do
arping -c 1 $scan_ip$i
[ $? -eq 0 ] && echo $scan_ip$i >> ip.txt
[ $? -eq 0 ] && echo "$scan_ip$i,这个ip主机存活"
done
本文介绍了一个用于扫描局域网内存活主机的Bash脚本。该脚本通过用户输入的IP地址段及范围,利用arping命令扫描指定范围内哪些IP地址对应主机处于活跃状态,并将结果保存至文件。

2680

被折叠的 条评论
为什么被折叠?



