Am o mașină de care am schimbat numele gazdei. L-am schimbat în /etc/hosts, /etc/sysconfig/network și cu comanda hostname. hostname returnează numele scurt corect, hostname --fqdn returnează FQDN așteptat, dar hostname -A returnează un vechi Nume. Am schimbat adresa IP a mașinii pentru a mă asigura că nu este cache DNS extern.

Dacă deschid python și rulez

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

Ambele returnează vechiul nume de gazdă / fqdn, la fel ca hostname -A

Din pagina manuală a numelui de gazdă apare --fqdn ia doar shortname-ul și domeniul și le pune împreună.

Afișați FQDN (nume de domeniu complet calificat). Un FQDN constă dintr-un nume scurt de gazdă și Numele de domeniu DNS. Cu excepția cazului în care utilizați bind sau NIS pentru căutările gazdei, puteți schimba FQDN și numele de domeniu DNS (care face parte din FQDN) în fișierul / etc / hosts.

Care este diferența dintre aceste comenzi și cum pot depana mai bine de ce se lipsește vechiul nume de gazdă.

Comentarii

  • Ce zici de identificarea specifică a linux / unix și a versiunii. Există cazuri în care aceste informații se află în altă parte și sunt configurate la boot tim e din alte fișiere de configurare.
  • Red Hat Enterprise Linux 6.4

Răspuns

hostname returnează numele de gazdă sau numele nodului configurat. În practică, poate fi fie un nume scurt (în majoritatea configurațiilor), fie un nume lung (în mod normal, FQDN în acest caz). Numele scurt este dat de hostname --short.

hostname --fqdn returnează FQDN, care este gethostbyname pe nodename (așa cum este returnat de apelul de sistem uname, consultați pagina de manual uname(2)).

hostname -A este ceva obscur și neintuitiv. În special, în ciuda numelui și descrierii sale („toate FQDN-urile”), nu oferă FQDN-ul standard, prin design. Astfel aș spune: nu-l utilizați. Un motiv este că lipsește adresele IP valide ale mașinii, cum ar fi 127.0.1.1, cu care FQDN poate fi asociat în fișierul /etc/hosts (acesta este momentan implicit în Debian și Ubuntu, de exemplu). O altă problemă cu hostname -A metoda este că rezoluția inversă a unei adrese IP nu dă neapărat un FQDN; poate fi doar un nume scurt.

În ceea ce privește problema dvs. cu python, poate fi o eroare acolo. Nu știu. Vă sugerez să încercați următorul 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"; 

Comentarii

  • Deci, de unde își obține informațiile numele de gazdă -A? Aveam o problemă cu alte software-uri instalate pe sistem pe care nu le-am putut remedia ' până când numele de gazdă -A nu a arătat numele corect.
  • ps, am încercat să repar adresa 127.0.1.1 la 127.0.0.1, dar modificările necesită minimum 6 caractere. Poate o puteți remedia.
  • @Rothgar hostname -A se uită la interfețele configurate și le rezolvă invers (ei bine, acestea sunt informațiile date în pagina sa de manual). 127.0.1.1 este adresa IP corectă în răspunsul meu, nu 127.0.0.1. Faptul că 127.0 .1.1 este utilizat pentru FQDN (în loc de 127.0.0.1) este o cauză a problemei cu hostname -A.
  • @ vinc17: Nu ' nu cred că numele nodului este relativ aici. Diferența principală este hostname -f utilizați /etc/hosts, în timp ce hostname -A utilizați căutarea dns. Vedeți mai multe aici: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: rulați strace hostname -A pentru a vedea ce se întâmplă.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *