如果我的IP地址为192.168.1.2,我需要生成接下来的100个IP,以便不断添加到基本ip。
我尝试执行echo 192.168.1.{2..102}
这很好用但是我需要一个通用代码,它可以使用Shell脚本生成使用基本IP地址指定的尽可能多的IP地址。
答案 0 :(得分:1)
您可以使用for来遍历命令seq
创建的列表。然后,只需将seq
中的数字修改为第一个和最后一个数字
#!/bin/bash
START=0
END=100
for I in $(seq $START $END)
do
echo "192.168.0.$I"
done
答案 1 :(得分:0)
类似的东西:
#!/bin/bash
i=1
while (( i <= 100 ))
do
echo "x.y.z.$i"
i=$((i + 1))
done
答案 2 :(得分:0)
如果我需要更改到第二个八位字节,那么我应该能够改变。
例如。 SuperTable
。我需要为X和Y生成ip
如果我需要更改三个八位字节,那么我应该可以更改。
我正在寻找解决方案。 198.168.X.Y
工作正常,需要一个可以更改其他八位字节的脚本
答案 3 :(得分:0)
IP地址当然只是无符号的32位数。但是它们通常表示为十进制的字节,数字之间用点。
所以,如果你需要使用这个&#34; 点四方&#34;表示你可以把起始的一个转换回一个整数,计算出你想要的数量,并且对于你计算的每一个,将它打印成虚线四边形。
任何shell都支持算术表达式(使用按位运算符,为了方便起见,使用数组),这很简单:
#!/bin/ksh
ip="192.168.240.240"
num=100
set -A iparr $(echo $ip | sed 's/\./ /g')
nip=$((iparr[0] << 24))
nip=$((nip | iparr[1] << 16))
nip=$((nip | iparr[2] << 8))
nip=$((nip | iparr[3]))
lnip=$((nip + num))
while [ $nip -lt $lnip ]; do
let $((nip++))
iparr[0]=$((nip >> 24))
iparr[1]=$(((nip >> 16) & 255))
iparr[2]=$(((nip >> 8) & 255))
iparr[3]=$((nip & 255))
printf "%d.%d.%d.%d\n" ${iparr[0]} ${iparr[1]} ${iparr[2]} ${iparr[3]}
done
(虽然使用较旧的shell并不容易 - 但awk
和expr
都不容易对整数进行按位操作。但是,这可能是你的工具提供这些数字将接受普通整数或十六进制数字,因此您可能不需要使用虚线四元数表示法。)