2011-11-01 171 views
0

我工作的一個bash shell腳本,我需要能夠檢查,看看如果IP地址從返回:BASH IP地址檢查

dig $HOSTNAME +short 

是一個特定的子網或之內。例如,如果192.168.10.x或10.130.10.x的一部分,則執行z其他操作。

我不知道如何操作或檢查IP地址後,我將它存儲在一個變量,以便我可以構建出上述的邏輯測試。

+0

可能相關:[檢查一堆ip地址是否屬於給定網絡](http://stackoverflow.com/questions/435606) –

回答

0

我結束了使用下面的代碼,使其工作:

if [[ "$IP" == *10.130.10.* || "$IP" == *192.168.10.* ]]; then 
    mount code goes here 
fi 

感謝大家的幫助和解釋的事情對我來說,讓我進一步瞭解腳本。非常感謝!

1

如果你的子網是完整的類C,那麼你可以做一個子檢查:

if [ ${IP#192.168.10.*} == ${IP} -a ${IP#10.130.10.*} == ${IP} ] 
then 
    echo "not in either subnet" 
else 
    echo "in one of the subnets" 
fi 

編輯:請注意,這當然不驗證的IP地址是有效的,但它減輕了需要外部工具。

+0

+1,對於這種情況,這是最明智的解決方案,雖然它不是'真的基於IP地址和子網的想法。 –

+0

這看起來很不錯。然而,我似乎正在努力讓它發揮作用,因爲它似乎沒有從它傳遞給它的變量驗證IP。 – John

+0

我只是收到一個錯誤,當我嘗試使用這段代碼時,陳述了「[:太多的參數」。 – John