Bash脚本显示IP地址范围

时间:2014-05-21 07:06:12

标签: bash loops for-loop while-loop

我想编写一个bash脚本以获取两个IP地址并向我显示它们之间的整个范围......

我尝试但遗憾的是没有结果......

你能帮助我吗?

我发现了这个但不完整:

addresses=( `< listofnums` )
network=${addresses[0]%.*}
hosts=( ${addresses[@]##*.} )

for (( i=${hosts[0]}; i<255; ++i ))
do
        case "${hosts[@]}" in *"$i"*) ;; *) echo "$network.$i" ;; esac
done

这个脚本可以得到例如1.1.1.1 5.4.6.3并让我在它们之间的整个范围。

1 个答案:

答案 0 :(得分:1)

使用此答案中的功能:https://stackoverflow.com/a/3222521/116957

然后这会给你你想要的东西:

read -p "IP1> " ip1
read -p "IP2> " ip2

ip1n=$(INET_ATON $ip1)
ip2n=$(INET_ATON $ip2)

if [[ $ip2n -lt $ip1n ]]; then
    echo "Wrong range: $ip1 - $ip2"
    exit 1;
fi

for ipn in $(seq $ip1n $ip2n)
do
    INET_NTOA $ipn
done