2014-05-21 70 views
0

我想,爲了得到兩個IP地址,顯示我他們之間的整個範圍來寫一個bash腳本...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

使用的功能在這個答案: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