我有一个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
可以用更少的步骤完成。