我需要在sh脚本中生成IP地址列表(IPv4)。我有开始和结束地址,例如;
开始:5.38.0.0结束:5.38.127.255
如何打印所有地址?
答案 0 :(得分:1)
将以下脚本保存为
#!/bin/bash
ip1=( $(echo "$1" | sed 's/\./ /g') )
ip2=( $(echo "$2" | sed 's/\./ /g') )
for i in $(seq ${ip1[0]} ${ip2[0]})
do
for j in $(seq ${ip1[1]} ${ip2[1]})
do
for k in $(seq ${ip1[2]} ${ip2[2]})
do
for l in $(seq ${ip1[3]} ${ip2[3]})
do
printf "%d.%d.%d.%d\n" $i $j $k $l
done
done
done
done
作为ip_generator
,执行chmod +x ip_generator
并按以下方式运行:
./ip_generator 5.38.0.0 5.38.127.255
即格式
./ip_generator start_address end_address
答案 1 :(得分:0)
实际上你有一个由4个数字组成的字符串 每个数字从0到255
分解Start String 开始 并且在最右边的数字加1 重组和输出 如果字符串中的数字与结束号匹配,则BREAK out
循环,而最右边的数字是< = 255 并将最右边的数字设置为0 然后将下一个数字加1 重组和输出 和 从START开始重复