使用 sed 将 IP 地址转换为公司标准的 DNS 名称?
Using sed to convert IP address to company-standard DNS name?
我有一个 COTS 产品,它要求我们使用 DNS 名称而不是 IP 地址设置特定配置 属性。幸运的是,我们公司标准化了 class 服务器的 DNS 名称。例如,10.2.100.50
的 IP 将具有 S010002100050.mycorp.com
的 DNS 名称。也就是说,它从 IP 地址中提取每个八位字节,在前面加上足够多的 0,使该值恰好有 3 个字符,然后附加 DNS 后缀。简单吧?
我的问题是,我需要获取 IP 地址并将其转换为 DNS 名称,以便在自动服务器配置期间应用它。我不是最擅长 sed 的,但我认为它可以用来做这件事。不幸的是,我终生无法弄清楚如何做。我遇到了几个相关的 Whosebug 问题 (question 1, question 2),这些问题讨论了前置 0,但尽管我尽我所能,但我无法让它按预期工作。
谁能给我一些建议和指导,告诉我如何才能做到这一点??谢谢!!!
你要不要试试:
ip="10.2.100.50"
sed -E 's/([0-9]+)/00/g; s/0*([0-9]{3})//g; s/\.//g; s/(.*)/S.mycorp.com/' <<< "$ip"
输出:
S010002100050.mycorp.com
我不得不将过程分为四个步骤:
s/([0-9]+)/00/g
为每个八位字节添加“00”。
s/0*([0-9]{3})//g
从每个八位字节中提取最后三位数字。
s/\.//g
删除点。
s/(.*)/S.mycorp.com/
附加后缀。
其他语言,例如 perl
可能会用更少的步骤完成。
我有一个 COTS 产品,它要求我们使用 DNS 名称而不是 IP 地址设置特定配置 属性。幸运的是,我们公司标准化了 class 服务器的 DNS 名称。例如,10.2.100.50
的 IP 将具有 S010002100050.mycorp.com
的 DNS 名称。也就是说,它从 IP 地址中提取每个八位字节,在前面加上足够多的 0,使该值恰好有 3 个字符,然后附加 DNS 后缀。简单吧?
我的问题是,我需要获取 IP 地址并将其转换为 DNS 名称,以便在自动服务器配置期间应用它。我不是最擅长 sed 的,但我认为它可以用来做这件事。不幸的是,我终生无法弄清楚如何做。我遇到了几个相关的 Whosebug 问题 (question 1, question 2),这些问题讨论了前置 0,但尽管我尽我所能,但我无法让它按预期工作。
谁能给我一些建议和指导,告诉我如何才能做到这一点??谢谢!!!
你要不要试试:
ip="10.2.100.50"
sed -E 's/([0-9]+)/00/g; s/0*([0-9]{3})//g; s/\.//g; s/(.*)/S.mycorp.com/' <<< "$ip"
输出:
S010002100050.mycorp.com
我不得不将过程分为四个步骤:
s/([0-9]+)/00/g
为每个八位字节添加“00”。s/0*([0-9]{3})//g
从每个八位字节中提取最后三位数字。s/\.//g
删除点。s/(.*)/S.mycorp.com/
附加后缀。
其他语言,例如 perl
可能会用更少的步骤完成。