如何从/etc/hostname和DNS域名获取主机名?

如何从/etc/hosts中获取主机名?通过编写hostname吗? 那DNS域名呢,我该怎么办?我如何通过命令行获取这些名称?

相关链接:https://unix.stackexchange.com/questions/186859/understand-hostname-and-etc-hosts - Melebius
2个回答

当你输入时
hostname

它将显示存储在其中的值。
/etc/hostname

查看 hostname --help 以获取许多选项。从帮助中...
-s, --short            short host name
-a, --alias            alias names
-i, --ip-address       addresses for the host name
-I, --all-ip-addresses all addresses for the host
-f, --fqdn, --long     long host name (FQDN)
-A, --all-fqdns        all long host names (FQDNs)
-d, --domain           DNS domain name
-y, --yp, --nis        NIS/YP domain name
-b, --boot             set default hostname if none available
-F, --file             read host name or NIS domain name from given file

这个命令可以获取或设置主机名或NIS域名。您还可以获取DNS域或FQDN(完全限定域名)。除非您正在使用bind或NIS进行主机查找,否则您可以在/etc/hosts文件中更改FQDN(完全限定域名)和DNS域名(它是FQDN的一部分)。
所以
hostname -f

对于长主机名(FQDN)。

我得到的是:"主机名:名称或服务未知" - dada dudu
你在/etc/hostname里有什么东西吗?这是我们这里通常为apache编辑的一个文件。示例主题:http://askubuntu.com/a/218499/15811 - Rinzwind
尝试过查看/etc/hosts文件,发现了一个本地主机(localhost),但实际上我在虚拟机上运行的时候不应该有这个。 - dada dudu
1@dadadudu localhost只是网络上“自己”的昵称。所有计算机(包括虚拟机)都可以使用localhost地址连接到自己。 - Melebius
@dadadudu这里的虚拟机有自己的名字(它叫做“test1”)。 - Rinzwind
但是localhost是什么呢?那域名系统(DNS)的域名呢?我得到了相同的错误。 - dada dudu
当我写主机名时,它给我返回的是server03。 - dada dudu

假设你想要获取本地(局域网)的IPv4地址....

为了避免服务器返回一个将你的IPv4和IPv6地址组合在一起的长字符串,在bash脚本中使用以下代码:

LOCALIP=$(hostname -I | awk '{print $1}')

在命令行界面上输入此命令:
hostname -I | awk '{print $1}'

只有当主机只有一个IPv4地址时,这才能正常工作。IPv6主机通常具有多个IPv6地址(一个永久地址和一个或多个临时地址)。 - David Foerster
对的。这就是为什么我建议的第一行是:“假设你想要获取本地(局域网)的IPv4地址……”但是根据你的观点,“主机名”并不总是获取IP信息的最佳工具。这取决于目标。原帖中没有详细说明他/她想要什么(我猜测可能是完全限定域名,但这只是我的猜测)。 - MrPotatoHead