Shell 脚本计算跨网段 IP 数量并输出可用 IP 地址
Shell 脚本计算跨网段 IP 数量并输出可用 IP 地址
本脚本可以计算给定网络地址和掩码的跨网段 IP 数量,并输出所有可用的 IP 地址。
假设网络地址为'192.168.0.0',掩码为'255.255.252.0',脚本如下:
#!/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
脚本解释:
- 计算主机位数: 首先,脚本将掩码转换为二进制形式,并计算其中连续的'1'的个数,这个数字就是网络掩码的位数,进而可以计算出主机位数。
- 计算可用 IP 地址数量: 使用 2 的主机位数次方减去 2,就可以得到该网络中可用的 IP 地址数量(减去网络地址和广播地址)。
- 输出可用 IP 地址: 脚本使用循环遍历所有可用 IP 地址,并将其打印出来。
使用方法:
- 将脚本保存为
.sh文件,例如ip_calc.sh。 - 修改脚本中的
network和mask变量以匹配你想要计算的网络地址和掩码。 - 在终端中运行脚本:
bash ip_calc.sh
注意:
- 该脚本仅计算跨网段的 IP 地址数量,并不考虑子网掩码。
- 脚本中的
network和mask变量需要使用引号括起来,以防止空格导致错误。 - 脚本中的
seq命令需要在你的系统中安装。
原文地址: https://www.cveoy.top/t/topic/nNza 著作权归作者所有。请勿转载和采集!