2011-11-01 105 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