Ho una macchina di cui ho cambiato il nome host. Lho modificato in /etc/hosts, /etc/sysconfig/network e con il comando hostname. hostname restituisce il nome breve corretto, hostname --fqdn restituisce lFQDN previsto, ma hostname -A restituisce un vecchio nome. Ho cambiato lindirizzo IP della macchina per assicurarmi che non fosse “t cache DNS esterna.

Se apro python ed eseguo

import socket print(socket.gethostname()) print(socket.getfqdn()) 

Entrambi restituiscono il vecchio nome host / fqdn, lo stesso di hostname -A

Dalla pagina man del nome host appare --fqdn prende solo il nome breve e il dominio e li mette insieme.

Visualizza lFQDN (Fully Qualified Domain Name). Un FQDN è costituito da un nome host breve e Nome di dominio DNS. A meno che non utilizzi bind o NIS per le ricerche host, puoi modificare lFQDN e il nome di dominio DNS (che fa parte dellFQDN) nel file / etc / hosts.

Qual è la differenza tra questi comandi e come posso risolvere meglio il motivo per cui il vecchio nome host resta in giro.

Commenti

  • Che ne dici dello specifico linux / unix e dellidentificazione della versione. Ci sono casi in cui queste informazioni risiedono altrove e vengono impostate allavvio e da altri file di configurazione.
  • Red Hat Enterprise Linux 6.4

Risposta

hostname restituisce il nome host o il nome nodo configurato. In pratica, può essere un nome breve (nella maggior parte delle configurazioni) o un nome lungo (normalmente lFQDN in questo caso). Il nome breve è dato da hostname --short.

hostname --fqdn restituisce lFQDN, che è gethostbyname sul nome nodo (come restituito dalla uname chiamata di sistema, vedere la pagina man di uname(2)).

hostname -A è qualcosa di oscuro e non intuitivo. In particolare, nonostante il nome e la descrizione (“tutti gli FQDN”), non fornisce lFQDN standard, in base alla progettazione. Quindi direi: non usarlo. Uno dei motivi è che manca gli indirizzi IP validi della macchina, come 127.0.1.1, con il quale lFQDN può essere associato nel file /etc/hosts (questo è attualmente limpostazione predefinita in Debian e Ubuntu, per esempio). Un altro problema con hostname -A il metodo è che la risoluzione inversa di un indirizzo IP non fornisce necessariamente un FQDN; può essere solo un nome breve.

Riguardo al tuo problema con Python, potrebbe esserci un bug. Non lo so. Ti suggerisco di provare il seguente 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"; 

Commenti

  • Allora da dove prende le informazioni hostname -A? Avevo un problema con altro software installato sul sistema che non potevo ' t risolvere fino a quando hostname -A non mostrava il nome corretto.
  • ps, ho provato a correggere il tuo indirizzo 127.0.1.1 in 127.0.0.1 ma le modifiche richiedono almeno 6 caratteri. Forse puoi aggiustarlo.
  • @Rothgar hostname -A guarda le interfacce configurate e le risolve al contrario (beh, questa è linformazione data nella sua pagina man). 127.0.1.1 è lindirizzo IP corretto nella mia risposta, non 127.0.0.1. Il fatto che 127.0 .1.1 viene utilizzato per lFQDN (invece di 127.0.0.1) è una delle cause del problema con hostname -A.
  • @ vinc17: I don ' t pensare che nodename sia relativo qui. La differenza principale è hostname -f use /etc/hosts, mentre hostname -A utilizza la ricerca DNS. Ulteriori informazioni qui: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: run strace hostname -A per vedere cosa succede.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *