如何在shell脚本中通过特定的ip范围生成ip地址?

时间:2016-06-01 08:46:26

标签: linux shell unix sh

我需要在sh脚本中生成IP地址列表(IPv4)。我有开始和结束地址,例如;

  

开始:5.38.0.0结束:5.38.127.255

如何打印所有地址?

2 个答案:

答案 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开始重复