如何获取计算机名称(不是其主机名)?

Jon*_*n H 34 linux hostname

我搜索的所有结果最终都与hostname或 有关uname -n。我查找了两者的手册,寻找偷偷摸摸的选项,但没有运气。

我试图scutil --get ComputerName在 Linux 系统上找到等效的 OSX 。在 Mac OS X 上,计算机名称用作计算机的人类可读标识符;它显示在各种管理屏幕中(例如,库存管理、基于 Bonjour 的远程访问等)并用作默认主机名(经过过滤处理空格等)。

Ste*_*itt 44

对于任何运行 Linux 的计算机来说,最接近人类可读(和人类选择)的名称是存储在/etc/hostname. 在某些(不是全部)Linux 发行版上,此名称在安装过程中作为被计算者的名称输入(但有网络主机名限制,与 macOS 的计算机名称不同)。这可以是命名空间的,每个UTS 命名空间可以有不同的主机名。

运行 systemd 的系统区分三个不同的主机名,包括一个“漂亮的”人类可读的名称,它应该以与 macOS 计算机名称类似的方式进行描述;这可以使用hostnamectl's--pretty选项设置和检索。另外两个主机名是静态主机名,它是上面描述的默认主机名,以及反映当前网络配置的瞬态主机名。

Systemd 还支持机箱类型(例如“平板电脑”)和主机图标;见systemd-hostnamed.service


jno*_*orp 24

你可以使用sudo dmidecode | grep -A3 '^System Information'命令。此命令从 BIOS 和硬件读取信息。来自我的机器的示例:

System Information
    Manufacturer: LENOVO
    Product Name: 20BHA06YGB
    Version: ThinkPad W540
Run Code Online (Sandbox Code Playgroud)

资料来源: [1]

  • 用户选择的名称?这对我来说听起来像主机名。 (15认同)
  • 对不起,我弄错了。无论如何我都会留下答案。我所知道的使用 Linux 发行版的唯一用户选择的名称是主机名。 (2认同)

Dmi*_*yev 21

严格来说,Linux 中并没有与网络无关的“计算机名”这种东西,我其实也看不出给不在网络上的计算机命名的目的。

为什么你的计算机有不同串中的原因/etc/hostname/etc/hosts并且uname -n是DHCP协议有设施,以IP地址到新的主机一起提供主机名。“machine42.work.localnetwork”看起来与 DHCP 服务器会选择的名称完全一样。然后保存该字符串并通过gethostname调用返回。

也可以看看:

如何更改计算机名称?(tl;dr echo computername > /etc/hostname) - 这就是在安装过程中选择名称时会发生的情况。

如何在不重新启动的情况下更改主机名?(tl; dr hostname computername) - 这就是当您获得带有主机名的 DHCP 租约时会发生的情况。


小智 5

其他答案说没有 Linux 等价物,即使实际上有。它被称为“漂亮的主机名”。运行以下命令来获取它:

hostnamectl --pretty
Run Code Online (Sandbox Code Playgroud)

  • `hostnamectl` 需要 SystemD。漂亮的信息存储在`/etc/machine-info` (4认同)
  • +1 我认为这应该是选择的答案。--- 维基百科说:“主机名是具有关联 DNS 记录的域名。” 将此与 tools.ietf.org/html/rfc1178 结合使用,后者建议不要使用域名作为您的计算机名称。这意味着也不应该使用主机名作为您的计算机名称。当一台计算机尝试同时运行两个网络时,会出现什么情况?在这种情况下,主机名不能是它们两个的主机名。主机名显然超载,试图同时成为 DNS 主机名和机器名。 (2认同)