使用sed将IP地址转换为公司标准的DNS名称?



我有一个COTS产品,它要求我们用DNS名称而不是IP地址设置一个特定的配置属性。幸运的是,我们公司对这类服务器的DNS名称进行了标准化。例如,IP为10.2.100.50的DNS名称为S010002100050.mycorp.com。也就是说,它从IP地址中获取每个八位字节,加上足够多的0,使该值恰好有3个字符,然后附加DNS后缀。简单,是吧?

我的问题是,我需要将IP地址转换为DNS名称,以便我可以在自动服务器配置期间应用它。我不是最擅长sed的,但我认为它可以用来做这个。不幸的是,我一辈子也想不出该怎么做。我遇到了几个相关的Stackoverflow问题(问题1,问题2),讨论了预挂起0,但尽我所能,我无法让它像预期的那样工作。

谁能给我一些建议和指导,我怎么才能做到这一点?谢谢! !

请尝试:

ip="10.2.100.50"
sed -E 's/([0-9]+)/001/g; s/0*([0-9]{3})/1/g; s/.//g; s/(.*)/S1.mycorp.com/' <<< "$ip"

输出:

S010002100050.mycorp.com

我必须把这个过程分成四个步骤:

  • s/([0-9]+)/001/g前缀"00">
  • s/0*([0-9]{3})/1/g提取每个八位的后三位数字。
  • s/.//g删除点。
  • s/(.*)/S1.mycorp.com/附加后缀

其他语言如perl可以用更少的步骤完成。

最新更新