扫描主机所有网卡所在IP段的信息

作者: li-0578 2012-11-10 21:47:32
#! /bin/bash
#getip address 得到主机的IP
export IPaddr=$(ifconfig |grep -v 127.0.0.1|awk -F':| +' '/inet addr/{print $4}')

for i in $IPaddr #根据主机的IP个数进行循环
do
#get host IP head
export IPHEAD=$(echo $IPaddr|awk -F'.' '{print $1"."$2"."$3"."}') #得到IP的前三段
export IPtail=$(echo $IPaddr|cut -d. -f4) #得到IP的最后一位
#get MAC address
export MACS=$(ifconfig |grep -v 127.0.0.1|awk -F':| +' '/'$IPaddr'/{print$8}'|cut -d. -f4) #通过IP过滤对应的NETMASK地址
#mac address
M1=$MACS
#host number #每网段应该有的主机个数
M2=$[256-$M1]

#network number #有多少个网段
M3=256/$M2
export p=0
for ((i=1;i<=$M3;i++))
do
if [ $IPtail -lt $[$M2*i] ]
then
p=$i
break
fi
done
#以上循环得到IP所在第几个网段
for ((j=M2*($p-1)+1;jdo
echo $IPHEAD$j
ping $IPHEAD$j -c1 >/dev/null && echo "$j is up" >>/root/ping.txt || echo "$j is down" >>/root/ping.txt 2>&1
done
#计算出网段后,就可以得到所在网段所有的主机IP地址了
done

脚本先得到主机的所有IP地址信息,除去本机的127网段的IP,然后根据IP地址得到主机位的前三段,和最后一段,然后再通过IP地址过滤到IP对应的NETMASK地址。通过NETMASK地址最后一位来计算,有多少网段,每个网段有几台机器可用。然后再计算本机的IP所以哪个网段,最后PING一下本机所在的IP地址段有哪些IP可以PING通,有哪些PING 不通。

此脚本后续还可以再通过PING后,查看arp -n得到IP和MAC对应关系。根据自己的需求定制了!!

相关资讯