Bash Shell脚本用于计算子网中的地址

时间:2013-10-18 16:12:23

标签: bash shell loops subnet calculated-field

这是一个难以推断我需要的东西,所以请耐心等待。假设我们有这个子网10.4.x.0 / 28,它在多个看起来相同的子网上进行迭代,即

10.4.0.0/28
10.4.0.16/28
10.4.0.32/28  etc...

我们在这些子网中有一个地址,我们需要提取它始终是当前子网的+12。即

10.4.0.0/28  ->  10.4.0.12
10.4.0.16/28  -> 10.4.0.28
10.4.0.32/28  ->  10.4.0.44

我如何编写shell脚本来遍历

中的所有子网

10.4.0.0/2810.4.255.240获取每个子网中的单个地址?

1 个答案:

答案 0 :(得分:2)

很难说出你想要的格式,但是......

for I in $(seq 12 16 256); do echo 10.4.{0..255}.$I; done

给出16行,4096个像这样的值...

10.4.0.12 10.4.1.12 10.4.2.12 10.4.3.12 10.4.4.12 10.4.5.12 10.4.6.12 10.4.7.12 10.4.8.12 10.4.9.12 10.4.10.12 10.4.11.12 10.4.12.12 10.4.13.12 10.4.14.12 10.4.15.12 10.4.16.12 10.4.17.12 ...
10.4.0.28 10.4.1.28 10.4.2.28 10.4.3.28 10.4.4.28 10.4.5.28 10.4.6.28 10.4.7.28 10.4.8.28 10.4.9.28 10.4.10.28 10.4.11.28 10.4.12.28 10.4.13.28 10.4.14.28 10.4.15.28 10.4.16.28 10.4.17.28 ...
[...]
10.4.235.252 10.4.236.252 10.4.237.252 10.4.238.252 10.4.239.252 10.4.240.252 10.4.241.252 10.4.242.252 10.4.243.252 10.4.244.252 10.4.245.252 10.4.246.252 10.4.247.252 10.4.248.252 10.4.249.252 10.4.250.252 10.4.251.252 10.4.252.252 10.4.253.252 10.4.254.252 10.4.255.252

如果您想动态更改顶级地址,可以创建一个功能......

iterateIP(){
     for I in $(seq 12 16 256); do echo $1.{0..255}.$I; done 
}

并且这样打电话:

iterateIP 10.4