【发布时间】:2016-02-28 10:08:09
【问题描述】:
我需要一个脚本来生成 IP 范围...假设从 64.1.1.1 到 74.255.255.255,输出应该是这样的:
64.1.1.1
64.1.1.2
64.1.1.3
........
74.255.255.254
74.255.255.255
(line-by-line)
【问题讨论】:
-
这不是编码服务。展示你的努力,人们可能会帮助你。
我需要一个脚本来生成 IP 范围...假设从 64.1.1.1 到 74.255.255.255,输出应该是这样的:
64.1.1.1
64.1.1.2
64.1.1.3
........
74.255.255.254
74.255.255.255
(line-by-line)
【问题讨论】:
#!/bin/bash
# convert IP to decimal
ip2dec() {
set -- ${1//./ } # split $1 with "." to $1 $2 $3 $4
declare -i dec # set integer attribute
dec=$1*256*256*256+$2*256*256+$3*256+$4
echo $dec
}
# convert decimal to IP
dec2ip() {
declare -i ip1 ip2 ip3 ip4
ip1=$1/256/256/256
ip2=($1-$ip1*256*256*256)/256/256
ip3=($1-$ip1*256*256*256-$ip2*256*256)/256
ip4=$1-$ip1*256*256*256-$ip2*256*256-$ip3*256
echo $ip1.$ip2.$ip3.$ip4
}
s=$(ip2dec $1)
e=$(ip2dec $2)
for ((i=$s;i<=$e;i++)); do
dec2ip $i
done
例如:./script.sh 64.1.2.250 64.1.3.5
输出:
64.1.2.250 64.1.2.251 64.1.2.252 64.1.2.253 64.1.2.254 64.1.2.255 64.1.3.0 64.1.3.1 64.1.3.2 64.1.3.3 64.1.3.4 64.1.3.5如果你需要性能,我建议使用 perl。
【讨论】: