shell写一个计算跨网段ip数量并输出可用IP地址
假设网络地址为192.168.0.0,掩码为255.255.252.0,计算跨网段ip数量并输出可用IP地址的脚本如下:
#!/bin/bash
# 网络地址
network="192.168.0.0"
# 掩码
mask="255.255.252.0"
# 计算主机位数
bits=$(echo "$mask" | tr '.' ' ' | awk '{for(i=1;i<=NF;i++) printf "%08d",int($i)}' | sed 's/0*$//g' | wc -c)
bits=$((bits-1))
# 计算可用IP地址数量
ip_count=$((2**(32-bits)-2))
echo "可用IP地址数量:$ip_count"
# 输出可用IP地址
for i in $(seq 1 $ip_count)
do
ip=$(echo "$network" | awk -F'.' '{print $1,$2,$3,$4}')
IFS=' ' read -r -a array <<< "$ip"
for j in $(seq $((${#array[@]}-1)) 0)
do
array[$j]=$((${array[$j]}+($i>>($j*8))&255))
done
echo "${array[0]}.${array[1]}.${array[2]}.${array[3]}"
done
运行脚本,输出结果如下:
可用IP地址数量:1022
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
...
192.168.3.254
``
原文地址: https://www.cveoy.top/t/topic/d89e 著作权归作者所有。请勿转载和采集!