Bash ip Generator
Version vom 12. Juni 2023, 07:12 Uhr von Thomas.will (Diskussion | Beiträge)
#!/bin/bash
IP=$1
NM=$2
ip_dez()
{
local oktette=$1
IFS="." read -a okt <<< $oktette
local dez=0
for ((x=0;x<=3;x++))
do
NR=$(((3-$x)*8))
dez=$((dez + ( ${okt[$x]} << $NR) ))
done
echo $dez
}
dez_ip(){
local decimal=$1
local ip=""
for ((i=3; i>=0; i--)); do
local octet=$(( decimal >> (i * 8) & 255 ))
ip="$ip${octet}."
done
echo "${ip%.*}"
}
cidr_dez(){
local cidr=$1
cidr=$(((1 << 32) - (1 << (32 - cidr))))
echo $cidr
}
cidr_ek(){
local cidr=$1
cidr=$(((1 << (32 - cidr)) - 1 ))
echo $cidr
}
gen_range(){
local start=$1
local end=$2
for ((ip_d=$start;ip_d<=$end;ip_d++))
do
dez_ip $ip_d
done
}
IP_D=$(ip_dez $IP)
NM_D=$(cidr_dez $NM)
NM_EK=$(cidr_ek $NM)
NN_D=$((IP_D & NM_D))
BC_D=$((NN_D + NM_EK))
NN=$(dez_ip $NN_D)
BC=$(dez_ip $BC_D)
gen_range $NN_D $BC_D