本文是自动探测一个网段中哪些地址已被占用的shell脚本

#!/bin/bash
#Usage: $0 [Ntework] [Start] [End]
#注:该脚本的作用是检测${Network}.${Start}到${Network}.${End}
#这些IP地址中哪些IP地址已被占用,将被占用的IP地址输出到指定的输
#出文件中.
#默认若没有在命令行中指定Network则默认使用本机所在的网络
#若没在命令行中指定Start(开始的IP地址)则默认使用为1
#若没有在命令行中指定End(结束的IP地址)则默认使用255
#
#Author:huangyandong
#Web:http://huangyandong.blog.51cto.com/
#History:2011/10/20 release 1.0
#

#变量设置
#指定获取的网络接口名
DEV=eth0
#指定ping的次数,默认为1
COUNT=1
#指定将被占用的地址保存的文件
OUTPUT=ip.active

#获取本地IP
localip=$(ifconfig $DEV | grep 'inet addr'|cut -d":" -f2 |gawk '{print $1}')
#获取本地网路,采取的办法是去掉最后一个字段(含'.'号)
localnetwork=${localip%.*}
#可以在命令行中指定探测的网络号 ,若没指定则默认使用本地主机所在网络
whichnetwork=${1:-${localnetwork}}
#可以在命令行中指定ping的起始地址
start=${2:-1}
#可以在命令行中指定ping的结束地址
end=${3:-255}


for i in $(seq $start $end);do
        ping -c $COUNT ${whichnetwork}.${i} 1>/dev/null 2>&1 && echo ${whichnetwork}.${i} >> $OUTPUT
done