BASH IP 地址检查

发布于 2024-12-13 06:55:17 字数 226 浏览 0 评论 0原文

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

dig $HOSTNAME +short

位于特定子网内。例如,如果 192.168.10.x 或 10.130.10.x 的一部分,则执行 z,否则执行 y。

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

I am working on a BASH shell script where I need to be able to check and see if the IP address returned from:

dig $HOSTNAME +short

is within a particular subnet or not. For example, if part of 192.168.10.x or 10.130.10.x then do z else do y.

I am not sure how to manipulate or check the IP address after I have it stored in a variable so that I can build out the logical test described above.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苄①跕圉湢 2024-12-20 06:55:17

如果您的子网是完整的 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 your subnets are full class C then you can just do a substring check:

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

Edit: Note, this of course doesn't validate that the IPs are valid, but it alleviates the need for external tools.

一抹淡然 2024-12-20 06:55:17

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

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

感谢大家的帮助并向我解释事情,让我进一步了解脚本。真的很感激!

I ended up using the following code to make it work:

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

Thanks for everyone's help and explaining things to me to allow me to further learn about scripting. It is really appreciated!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文