【发布时间】:2015-12-20 12:16:20
【问题描述】:
我正在尝试检查服务器列表是否都具有有效的 PTR 记录。我的问题是要比较服务器列表 afg 目前我已经完成了以下操作:
hostlist=$(echo /locationOfhostfile | awk 'BEGIN { FS=":" } ; { print $4 }' | xargs -i host {})
这将返回以下格式的所有服务器(name.location.com 是 IPAddress 以及它们拥有的任何别名)。然后我在服务器上执行 dig -x 如下:
ptrrecords=$($(echo "$hostlist" | awk '{ print $3 }' | tr -d ',' | xargs -i dig +short -x {})
这仅返回具有有效 PTR 的服务器的名称。 (名称.location.com) 我现在想比较这两个列表,所以我创建了另外 2 个变量来缩短这两个列表,使其只有服务器名称。
finalhostlist=$(echo "$hostlist" | awk 'BEGIN { FS="." } ; { print $1 }')
finalptrrecords=$(echo "$ptrlist" | awk 'BEGIN { FS="." } ; { print $1 }')
当我比较这两个变量时,我的问题是 2 个服务器不遵循正常的命名约定 (name.location.com),结果显示为 server is 10 作为第一个“。”因为该行是在 IP 地址期间。此问题发生在 finalhostlist 变量中。 如何将 $finalhostlist 的字段分隔符设为句号或空格?
为我提出这个问题的冗长方式道歉。
【问题讨论】:
-
设置 ifs。
IFS=". " -
我可以发誓我昨天尝试了这个但无济于事。这现在可以工作了,非常感谢!