ip地址扫描

自己写的一个ip地址扫描的shell脚本,功能是输入ip地址和掩码,通过ping检测整个网段的ip地址,输出ping的结果。

主要的几个函数如下:

1、ip地址转化为数值,方便计算

ip2num()
{
ip=$
a=`echo $ip |awk -F '.' '{print $1}'`
b=`echo $ip |awk -F '.' '{print $2}'`
c=`echo $ip |awk -F '.' '{print $3}'`
d=`echo $ip |awk -F '.' '{print $4}'`
num=$(($a***+$b**+$c*+$d))
echo $num
echo "obase=10;(($num))"bc
}

2、数值转化为ip

num2ip()
{
num=$
a=$(($num/(**)))
#echo $a
b=$(($num/(*)-$a*))
#echo $b
c=$(($num/-$a**-$b*))
#echo $c
d=$(($num-$a***-$b**-$c*))
#echo $d
echo $a.$b.$c.$d >>ip.dat
iptmp=$a.$b.$c.$d
}

3、cdr掩码转化为ip格式

cdr2mask ()
{
# Number of args to shift, .., first non- byte, zeroes
set -- $(( - ($ / ) )) $(( ( << ( - ($ % ))) & ))
[ $ -gt ] && shift $ || shift
#echo ${-}.${-}.${-}.${-}
mask=${-}.${-}.${-}.${-}
}

4、ip格式掩码转化为cdr

mask2cdr ()
{
# Assumes there's no "255." after a non-255 byte in the mask
local x=${##*.}
set -- ^^^^^^^^^^ $(( (${#} - ${#x})* )) ${x%%.*}
x=${%%$*}
echo $(( $ + (${#x}/) ))
}

5、由ip地址和掩码计算网络地址

net ()
{ ip=$
a=`echo $ip |awk -F '.' '{print $1}'`
b=`echo $ip |awk -F '.' '{print $2}'`
c=`echo $ip |awk -F '.' '{print $3}'`
d=`echo $ip |awk -F '.' '{print $4}'` mask=$
m=`echo $mask |awk -F '.' '{print $1}'`
n=`echo $mask |awk -F '.' '{print $2}'`
o=`echo $mask |awk -F '.' '{print $3}'`
p=`echo $mask |awk -F '.' '{print $4}'` n1=$(($a&$m))
n2=$(($b&$n))
n3=$(($c&$o))
n4=$(($d&$p)) net=$((n1***+n2**+n3*+n4))
# echo $net
}

3、4两个函数直接用的网上大神的,写的很简洁,对比自己写的,感觉自己low爆了,哈哈

上一篇:2014百度之星第二题Disk Schedule(双调欧几里得旅行商问题+DP)


下一篇:POJ2677 Tour(DP+双调欧几里得旅行商问题)