Answers:
我在CentOS5上尝试过:
host -TtA $SERVERNAME|grep "has address"|awk '{print $1}'
我必须以TCP模式查询DNS。如果UDP在您的环境中有效,则不要使用“ T”选项。
注意:在Ubuntu 来宾 (VirtualBox)上,它将不起作用:
git@aHostname:~/$ host -TtA $(hostname -s)
Host aHostname not found: 3(NXDOMAIN)
因此,涵盖所有情况:
fqn=$(host -TtA $(hostname -s)|grep "has address"|awk '{print $1}') ; \
if [[ "${fqn}" == "" ]] ; then fqn=$(hostname -s) ; fi ; \
echo "${fqn}"
host -TtA $(hostname -s)|grep "has address"|awk '{print $1}'
使用Redhat服务器工作
这是我找到fqn的一种方法:
fqn=$(nslookup $(hostname -i)) ; fqn=${fqn##*name = } ; fqn=${fqn%.*} ; echo $fqn
换句话说,我必须nslookup
使用IP地址,这给了我类似的东西:
Server: 128.xxx.yyy.zzz
Address: 128.xxx.yyy.zzz#ww
aa.bb.cc.dd.in-addr.arpa name = myserver.fully.qualified.name.
从那里开始,这只是通过bash字符串操作删除我不需要的内容的问题。
也许有一个更简单的方法?
仅当您正确配置了主机名并具有正确的dns设置等之后,该方法才起作用。如果拥有所有这些,则您已经知道您的fqdn。
没有可靠的方法来获取fqdn。一个IP地址可以有多个fqdn,而一个fqdn可以具有多个IP地址...而且很多IP根本没有任何fqdn。
如果您的计算机直接连接到互联网,则只需使用IP地址并提出反向DNS请求:host 1.2.3.4
但这通常不会给您所需的答案(例如,尝试使用google)。
host
仅得到A记录(或进行相应查找)。
不hostname --fqdn
适合您吗?
hostname --fqdn
返回短名称,其中fqdn定义为主机名别名之一。
-f
并且--fqdn
是同一回事。