Macos BASH IP地址检查

Macos BASH IP地址检查,macos,bash,validation,shell,ip-address,Macos,Bash,Validation,Shell,Ip Address,我正在编写BASH shell脚本,需要能够检查并查看IP地址是否从以下位置返回: dig $HOSTNAME +short 是否在特定子网内。例如,如果是192.168.10.x或10.130.10.x的一部分,则执行z,否则执行y 在将IP地址存储在变量中之后,我不确定如何操作或检查它,以便构建上述逻辑测试。如果您的子网已满C类,则只需执行子字符串检查: if [ ${IP#192.168.10.*} == ${IP} -a ${IP#10.130.10.*} == ${IP} ] the

我正在编写BASH shell脚本,需要能够检查并查看IP地址是否从以下位置返回:

dig $HOSTNAME +short
是否在特定子网内。例如,如果是192.168.10.x或10.130.10.x的一部分,则执行z,否则执行y


在将IP地址存储在变量中之后,我不确定如何操作或检查它,以便构建上述逻辑测试。

如果您的子网已满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是否有效,但它减轻了对外部工具的需要。

我最终使用以下代码使其工作:

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

感谢大家的帮助和向我解释,让我能够进一步了解脚本。非常感谢

可能相关:+1,对于这种情况,这是最明智的解决方案,尽管它并不是真正基于ip地址和子网的概念。这看起来是一个很好的想法。但是,我似乎很难让它正常工作,因为它似乎没有从它传递给它的变量验证IP。我只是收到一个错误,指出“[:参数太多”当我试图使用这段代码时。@John:这意味着你没有使用bash。或者你已经设置了一些POSIX完全正确的模式。尝试将
-a
更改为
]&
。如果你实际上没有使用bash,请修复你的问题并删除“bash”标记。@Derobert-我使用的是一台带有OS 10.6.8的Macintosh。