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


19

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

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


Я могу ошибаться, но определение имени компьютера в качестве сетевого имени означает, что у него нет фиксированного имени, верно? Когда вы устанавливаете 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]


Я не думаю, что это то, что я ищу; это требует прав администратора и дает вам информацию об оборудовании, а не о выбранном пользователем имени во время установки ОС на этом компьютере.
— Шелджон

13
выбранное пользователем имя? это звучит как имя хоста для меня.
— Bibek_G

2
Извините, я понял это неправильно. Я все равно оставлю ответ. Единственное имя, выбранное пользователем, использующее известные мне дистрибутивы Linux, это имя хоста.
— jschlichtholz

@Bibek_G Вот почему я не могу найти ответ на свой вопрос, в OSX это две разные вещи. Я ищу имя, которое я ввел, когда я установил Linux на эту машину, которое, как я предполагаю, будет сетевым именем по умолчанию.
— Шелджон

@jschlichtholz Конечно, этот ответ может быть полезен для кого-то еще, но, как я сказал Bibek_G, я ищу то, что может быть именем сети по умолчанию.
— Шелджон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.