Jeg har en maskin jeg endret vertsnavnet til. Jeg endret den i /etc/hosts, /etc/sysconfig/network, og med hostname kommando. hostname returnerer riktig kortnavn, hostname --fqdn returnerer forventet FQDN, men hostname -A returnerer en gammel Navn. Jeg endret maskinens IP-adresse for å sikre at den ikke var ekstern DNS-cache.

Hvis jeg åpner python og kjører

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

Begge returnerer det gamle vertsnavnet / fqdn, det samme som hostname -A

Fra vertsnavnets manside vises det --fqdn tar bare kortnavn og domene og setter dem sammen.

Vis FQDN (fullt kvalifisert domenenavn). Et FQDN består av et kort vertsnavn og DNS-domenenavn. Med mindre du bruker bind eller NIS for vertsoppslag, kan du endre FQDN og DNS-domenenavnet (som er en del av FQDN) i / etc / hosts-filen.

Hva er forskjellen mellom disse kommandoene og hvordan kan jeg bedre feilsøke hvorfor det gamle vertsnavnet holder fast.

Kommentarer

  • Hva med den spesifikke linux / unix og versjonsidentifikasjon. Det er tilfeller der denne informasjonen finnes andre steder og er konfigurert ved oppstart e fra andre konfigurasjonsfiler.
  • Red Hat Enterprise Linux 6.4

Svar

hostname returnerer det konfigurerte vertsnavnet eller nodenavnet. I praksis kan det enten være et kort navn (i de fleste konfigurasjoner) eller et langt navn (vanligvis FQDN i dette tilfellet). Det korte navnet er gitt av hostname --short.

hostname --fqdn returnerer FQDN, som er gethostbyname på nodenavnet (som returnert av uname systemanropet, se uname(2) man-siden).

hostname -A er noe uklart og ikke-intuitivt. Spesielt, til tross for navn og beskrivelse («alle FQDNs»), gir den ikke standard FQDN etter design. Dermed vil jeg si: ikke bruk den. En grunn er at den savner gyldige IP-adresser til maskinen, for eksempel 127.0.1.1, som FQDN kan være tilknyttet i /etc/hosts -filen (dette er for øyeblikket standard under Debian og Ubuntu, for eksempel). Et annet problem med hostname -A metoden er at den omvendte oppløsningen til en IP-adresse ikke nødvendigvis gir en FQDN; det kan bare være et kort navn.

Når det gjelder problemet ditt med python, kan det være en feil der. Jeg vet ikke. Jeg foreslår at du prøver følgende Perl-skript:

#!/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"; 

Kommentarer

  • Hvor får vertsnavnet -A informasjonen? Jeg hadde et problem med annen programvare installert på systemet som jeg ikke kunne ' t fikse til vertsnavnet -A viste riktig navn.
  • ps, jeg prøvde å fikse 127.0.1.1-adressen din til 127.0.0.1, men endringer krever minst 6 tegn. Kanskje du kan fikse den.
  • @Rothgar hostname -A ser på de konfigurerte grensesnittene og løser dem omvendt (vel, dette er informasjonen gitt på man-siden). 127.0.1.1 er riktig IP-adresse i svaret mitt, ikke 127.0.0.1. Det faktum at 127.0 .1.1 brukes til FQDN (i stedet for 127.0.0.1) er en årsak til problemet med hostname -A.
  • @ vinc17: Jeg don ' t tror nodenavnet er relativt her. Hovedforskjellen er hostname -f bruk /etc/hosts, mens hostname -A bruk dns-oppslag. Se mer her: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: run strace hostname -A for å se hva som skjer.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *