ip地址扫描

Posted ck_koma

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ip地址扫描相关的知识,希望对你有一定的参考价值。

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

主要的几个函数如下:

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

ip2num()
{
    ip=$1
    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*256*256*256+$b*256*256+$c*256+$d))
    echo $num
    echo "obase=10;(($num))"bc
}

2、数值转化为ip

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

3、cdr掩码转化为ip格式

cdr2mask ()
{
   # Number of args to shift, 255..255, first non-255 byte, zeroes
   set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0
   [ $1 -gt 1 ] && shift $1 || shift
   #echo ${1-0}.${2-0}.${3-0}.${4-0}
   mask=${1-0}.${2-0}.${3-0}.${4-0}
}

4、ip格式掩码转化为cdr

mask2cdr ()
{
   # Assumes theres no "255." after a non-255 byte in the mask
   local x=${1##*255.}
   set -- 0^^^128^192^224^240^248^252^254^ $(( (${#1} - ${#x})*2 )) ${x%%.*}
   x=${1%%$3*}
   echo $(( $2 + (${#x}/4) ))
}

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

net ()
{
    
    ip=$1
    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=$2
    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*256*256*256+n2*256*256+n3*256+n4))
#    echo $net
}

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

 

以上是关于ip地址扫描的主要内容,如果未能解决你的问题,请参考以下文章

请问如何扫描指定IP地址的端口号

ip地址扫描

如何在Android中扫描IP

今天用Java开发主机IP扫描神器,零基础Socket编程详细

今天用Java开发主机IP扫描神器,零基础Socket编程详细

[PythonCode]扫描局域网的alive ip地址