我想编写一个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
并让我在它们之间的整个范围。
答案 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