Como obter o nome do computador (não o nome do host)?

18

Todos os resultados de minhas pesquisas acabam tendo algo a ver com hostnameou uname -n. Procurei o manual para ambos, procurando opções sorrateiras, mas sem sorte.

Estou tentando encontrar um equivalente do OSX scutil --get ComputerNameem sistemas Linux. No Mac OS X, o nome do computador é usado como um identificador legível por humanos para o computador; é mostrado em várias telas de gerenciamento ( por exemplo, no gerenciamento de inventário, acesso remoto baseado em Bonjour, ...) e serve como o nome do host padrão (após a filtragem para manipular espaços etc.).

Sheljohn
fonte
Posso estar errado, mas definir o nome do computador como o nome da rede significa que ele não tem um nome fixo, certo? Quando você instala um Linux ou OSX em uma máquina, geralmente escolhe um nome para esse computador (que é o nome de rede padrão que eu assumo). Por exemplo, meu laptop pode ter o nome "FooBar", mas quando eu me conecto a uma rede no trabalho, recebo um nome de host como "machine42.work.localnetwork".
Sheljohn
@StephenKitt Exatamente, isso tem outro nome nos sistemas Linux?
Sheljohn
4
@ Sh3ljohn qual é o propósito do nomedocomputador osx? Eu não acho que exista um equivalente no sistema Linux.
Bibek_G 11/01
Você deu um nome diferente de host ao instalar o computador? Tente procurar por esse nome em / etc:grep -ri 'name' /etc
ptman
@Bibek_G Gostaria de usar isso para identificar a máquina na qual estou executando a partir de um software meu. O UUID é insuficiente porque pode haver vários SOs instalados no mesmo disco que, por sua vez, são executados na mesma máquina.
Sheljohn

Respostas:

31

O equivalente mais próximo a um nome legível por humanos (e escolhido por humanos) para um computador executando Linux é o nome do host padrão armazenado /etc/hostname. Em algumas distribuições (não todas) do Linux, esse nome é inserido durante a instalação como o nome do computador (mas com restrições de nome de host de rede, diferente do nome do computador do Mac OS X).

Stephen Kitt
fonte
Mas esse arquivo é frequentemente usado para definir hostnamee uname -n@ Sh3ljohn explicitamente queria evitar a saída desses dois comandos.
roaima 11/01
17

A rigor, não existe o "nome do computador" não relacionado à rede no Linux, e na verdade não vejo o propósito de nomear computadores que não estão na rede.

A razão pela qual o seu computador tem diferentes cadeias em /etc/hostname, /etc/hostse uname -né esse protocolo DHCP tem instalações para fornecer um nome de host, juntamente com o endereço IP para um novo hospedeiro. "machine42.work.localnetwork" se parece exatamente com um nome que o servidor DHCP escolheria. Essa sequência é salva e retornada pelas gethostnamechamadas.

Veja também:

Como altero o nome do computador? (tl; dr echo computername > /etc/hostname) - é o que acontece quando você escolhe um nome durante a instalação.

Como altero o nome do host sem reiniciar? (tl; dr hostname computername) - é o que acontece quando você recebe uma concessão de DHCP com um nome de host.

Dmitry Grigoryev
fonte
"Estritamente falando, não existe" nome de computador "não relacionado à rede no Linux" - isso não depende do serviço? Por exemplo, acho que o equivalente do Windows é o nome NetBIOS. É o nome amigável, sem as partes do domínio, e pode ser diferente da parte do host de um nome de domínio (totalmente qualificado ou não).
O nome NetBIOS ainda é um nome de rede, mesmo que seja diferente de um nome de domínio.
Dmitry Grigoryev
16

Você poderia usar o sudo dmidecode | grep -A3 '^System Information'comando Este comando lê informações do BIOS e do hardware. Exemplo da minha máquina:

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

Fontes: [1]

jschlichtholz
fonte
Eu não acho que é isso que estou procurando; isso requer direitos de administrador e fornece informações sobre o hardware, não sobre um nome escolhido pelo usuário no momento em que você instalou o sistema operacional nessa máquina.
Sheljohn
13
nome escolhido pelo usuário? isso soa como nome de host para mim.
Bibek_G 11/01
2
Desculpe, entendi errado. Deixarei a resposta de qualquer maneira. O único nome escolhido pelo usuário usando as distribuições Linux que eu conheço é o nome do host.
Jschlichtholz
@Bibek_G É por isso que não consigo encontrar a resposta para minha pergunta, no OSX essas são duas coisas diferentes. Estou procurando o nome que inseri ao instalar o Linux nessa máquina, que suponho que seria o nome de rede padrão.
Sheljohn
@jschlichtholz Obviamente, essa resposta pode ser útil para outra pessoa, mas como eu disse ao Bibek_G, estou procurando o que pode ser o nome de rede padrão na época.
Sheljohn