Как получить имя компьютера (не его имя)?

19

Все результаты моих поисков в конечном итоге имеют отношение к hostnameили uname -n. Я искал руководство для обоих, искал подлых вариантов, но не повезло.

Я пытаюсь найти эквивалент OSX в scutil --get ComputerNameсистемах Linux. В Mac OS X имя компьютера используется в качестве удобочитаемого идентификатора компьютера; он отображается на различных экранах управления ( например, при управлении запасами, удаленном доступе на основе Bonjour и т. д.) и служит именем хоста по умолчанию (после фильтрации для обработки пробелов и т. д.).

Sheljohn
источник
Я могу ошибаться, но определение имени компьютера в качестве сетевого имени означает, что у него нет фиксированного имени, верно? Когда вы устанавливаете Linux или OSX на компьютер, вы обычно выбираете имя для этого компьютера (которое, по-моему, является сетевым именем по умолчанию). Например, мой ноутбук может называться «FooBar», но когда я подключаюсь к сети на работе, я получаю имя хоста, такое как «machine42.work.localnetwork».
Шелджон
@ StefhenKitt Точно, у этого есть другое имя в системах Linux?
Шелджон
4
@ Sh3ljohn, с какой целью computername служит osx? Я не думаю, что есть какой-либо эквивалент в системе Linux.
Bibek_G
При установке этого компьютера вы указали какое-либо имя, отличное от имени хоста? Попробуйте найти это имя в / etc:grep -ri 'name' /etc
ptman
@Bibek_G Я хотел бы использовать это, чтобы определить машину, на которой я работаю, из моего программного обеспечения. UUID недостаточно, поскольку на одном диске может быть установлено несколько ОС, которые, в свою очередь, работают на одном компьютере.
Шелджон

Ответы:

31

Наиболее близким эквивалентом удобочитаемого (и выбранного человеком) имени для компьютера под управлением Linux является имя хоста по умолчанию, хранящееся в /etc/hostname. В некоторых (не во всех) дистрибутивах Linux это имя вводится во время установки в качестве имени компьютера (но с ограничениями сетевого имени хоста, в отличие от имени компьютера Mac OS X).

Стивен Китт
источник
Но этот файл часто используется для установки hostnameи uname -n, и @ Sh3ljohn явно хотел избежать вывода этих двух команд.
Ройма
17

Строго говоря, в 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 с именем хоста.

Дмитрий Григорьев
источник
«Строго говоря, в Linux не существует понятия« имя компьютера », не связанного с сетью» - не зависит ли оно от службы? Например, я думаю, что эквивалентом Windows является имя NetBIOS. Это понятное имя без доменных частей, и оно может отличаться от основной части доменного имени (полностью или нет).
Имя NetBIOS остается сетевым именем, даже если оно отличается от имени домена.
Дмитрий Григорьев
16

Вы можете использовать sudo dmidecode | grep -A3 '^System Information'команду. Эта команда читает информацию из BIOS и оборудования. Пример с моей машины:

System Information
    Manufacturer: LENOVO
    Product Name: 20BHA06YGB
    Version: ThinkPad W540

Источники: [1]

jschlichtholz
источник
Я не думаю, что это то, что я ищу; это требует прав администратора и дает вам информацию об оборудовании, а не о выбранном пользователем имени во время установки ОС на этом компьютере.
Шелджон
13
выбранное пользователем имя? это звучит как имя хоста для меня.
Bibek_G
2
Извините, я понял это неправильно. Я все равно оставлю ответ. Единственное имя, выбранное пользователем, использующее известные мне дистрибутивы Linux, это имя хоста.
jschlichtholz
@Bibek_G Вот почему я не могу найти ответ на свой вопрос, в OSX это две разные вещи. Я ищу имя, которое я ввел, когда я установил Linux на эту машину, которое, как я предполагаю, будет сетевым именем по умолчанию.
Шелджон
@jschlichtholz Конечно, этот ответ может быть полезен для кого-то еще, но, как я сказал Bibek_G, я ищу то, что может быть именем сети по умолчанию.
Шелджон