ip地址扫描
自己寫的一個ip地址掃描的shell腳本,功能是輸入ip地址和掩碼,通過ping檢測整個網段的ip地址,輸出ping的結果。
主要的幾個函數如下:
1、ip地址轉化為數值,方便計算
ip2num() {ip=$1a=`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 $numecho "obase=10;(($num))"bc }2、數值轉化為ip
num2ip() {num=$1a=$(($num/(256*256*256)))#echo $ab=$(($num/(256*256)-$a*256))#echo $bc=$(($num/256-$a*256*256-$b*256))#echo $cd=$(($num-$a*256*256*256-$b*256*256-$c*256))#echo $decho $a.$b.$c.$d >>ip.datiptmp=$a.$b.$c.$d }3、cdr掩碼轉化為ip格式
cdr2mask () {# Number of args to shift, 255..255, first non-255 byte, zeroesset -- $(( 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 there's no "255." after a non-255 byte in the masklocal 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=$1a=`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=$2m=`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爆了,哈哈
?
轉載于:https://www.cnblogs.com/wangle0529/p/8981866.html
總結
- 上一篇: BZOJ 1821: [JSOI2010
- 下一篇: 团队第二次作业