如何解决使用 sed 将 IP 地址转换为公司标准的 DNS 名称?
我有一个 COTS 产品,它要求我们使用 DNS 名称而不是 IP 地址设置某个配置属性。幸运的是,我们公司对此类服务器的 DNS 名称进行了标准化。例如,10.2.100.50
的 IP 的 DNS 名称为 S010002100050.mycorp.com
。也就是说,它从 IP 地址中取出每个八位字节,在前面加上足够多的 0,使该值正好有 3 个字符,然后附加 DNS 后缀。很简单吧?
我的问题是,我需要获取 IP 地址并将其转换为 DNS 名称,以便我可以在我的自动服务器配置期间应用它。我不是最擅长 sed 的人,但我认为它可以用来做到这一点。不幸的是,我一生都无法弄清楚如何。我遇到了几个相关的 Stackoverflow 问题(question 1、question 2),这些问题讨论了前置 0,但我可能无法按预期工作。
任何人都可以就我如何做到这一点提供一些建议和指导吗?谢谢!!!
解决方法
请你试试:
ip="10.2.100.50"
sed -E 's/([0-9]+)/00\1/g; s/0*([0-9]{3})/\1/g; s/\.//g; s/(.*)/S\1.mycorp.com/' <<< "$ip"
输出:
S010002100050.mycorp.com
我不得不将这个过程分为四个步骤:
-
s/([0-9]+)/00\1/g
在每个八位字节前加上“00”。 -
s/0*([0-9]{3})/\1/g
从每个八位字节中提取最后三位数字。 -
s/\.//g
删除点。 -
s/(.*)/S\1.mycorp.com/
附加后缀。
其他语言(例如 perl
)可以用更少的步骤完成。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。