hostname
retorna o nome do host ou nodename configurado. Na prática, pode ser um nome abreviado (na maioria das configurações) ou um nome longo (normalmente o FQDN, neste caso). O nome abreviado é dado por hostname --short
.
hostname --fqdn
retorna o FQDN, que é gethostbyname
no nome do nó (conforme retornado pela chamada de sistema uname
, consulte uname(2)
man page).
hostname -A
é algo obscuro e não intuitivo. Em particular, apesar de seu nome e descrição ("todos os FQDNs"), ele não fornece o FQDN padrão, por design. Assim eu diria: não use. Um dos motivos é que ele perde endereços IP válidos da máquina, como 127.0.1.1, com o qual o FQDN pode estar associado no arquivo /etc/hosts
(este é atualmente o padrão no Debian e no Ubuntu, por exemplo). Outro problema com o método hostname -A
é que a resolução inversa de um endereço IP não fornece necessariamente um FQDN; pode ser apenas um nome curto.
Em relação ao seu problema com o python, pode ser um erro. Eu não sei. Eu sugiro que você tente o seguinte script Perl:
#!/usr/bin/env perl
use strict;
use POSIX;
my $nodename = (POSIX::uname)[1];
print "Nodename: $nodename\n";
my @ghbn = gethostbyname $nodename;
print "FQDN: $ghbn[0]\n";
$ghbn[0] !~ /\./ && $ghbn[1] =~ /(\S+\.\S+)/
and print "Fixed FQDN from aliases: $1\n";