文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>获取网段内的ip地址并检测(Linux shell)

获取网段内的ip地址并检测(Linux shell)

时间:2006-01-02  来源:luweinet

取得网段内的ip地址 来ping检测是否alive.

#!/bin/bash
#Author by [email protected]
#Using GPL
#you should change hping path.
 
netid2=$1
pin=/usr/sbin/hping
 
netid=`echo $netid2 |awk -F / '{print $1}'`
iplist1=/tmp/iplist1
iplist2=/tmp/iplist2
iplist3=/tmp/iplist3
tmp=/tmp/diff
 
base=`echo $netid | awk -F . '{print $1,$2,$3}'`
i=`echo $netid |awk -F . '{print $4}'`
                                                                                                                                                                 
all=(${@//[!0-9]/ })
[ "${#all[@]}" != "8" ] && {
        echo "Usage: "
        echo "${0##*/} ip.ip.ip.ip/mask.mask.mask.mask"
        exit 1
}
                                                                                                                                                                 
get_addr () {
        if [ "$1" = "-b" ]; then
                op='|'; op1='^'; arg='255'
                shift
        else
                op='&'
        fi
        unset address
        while [ "$5" ]; do
                num=$(( $1 $op ($5 $op1 $arg) ))
                shift
                address="$address.$num"
        done
}
                                                                                                                                                                 
get_addr -b ${all[@]}
#broadcast=${address#.}
bt1=`echo ${address#.} | awk -F . '{print $4}'`
bt=`expr $bt1 - 1 `
#loop while bt < $bt
while [ $i -lt $bt ]
do
        i=`expr $i  + 1`
        #echo $i
        ipbase=`echo $netid | awk -F . '{print $1,$2,$3}'`
        ip=`echo $ipbase $i | tr " " "."`
        echo $ip >> $iplist1
        $pin -c 1 -S -d 32 $ip >> $iplist2 #must echo every ping.
        #echo $ip
done
 
#if have blank line,means maybe drop by firewall.
cat $iplist2 | sed -n '/=/p' | awk '{print $2}' | awk -F = '{print $2}' > $iplist3
echo -ne "`diff $iplist1 $iplist3 > /tmp/diff`"
 
#cat $tmp | sed -n '/ /p' |awk '{print $2," ","is NOT alive now"}'
echo -e "############################################################## "
echo -e " "
echo -ne "!!!This is e result!!!"
echo -e " "
cat $tmp | sed -n '/ /p' |awk '{print $2," ","is NOT alive"}'
echo -e " "
echo -e "############################################################## "
#cat $tmp | sed -n '/^>/p' |awk '{print $2," ","is alive"}' #in iplist1,which all ip.
 
rm -rf $iplist1
rm -rf $iplist2
rm -rf $iplist3
rm -rf $tmp


再分析就很方便了.
相关阅读 更多 +
排行榜 更多 +
我是班长去广告版下载

我是班长去广告版下载

模拟经营 下载
什么鸭小游戏安卓版下载

什么鸭小游戏安卓版下载

策略塔防 下载
极光影院官方最新版本2025下载

极光影院官方最新版本2025下载

趣味娱乐 下载