Minulla on kone, jonka isäntänimen muutin. Muutin sen /etc/hosts
, /etc/sysconfig/network
ja komennolla hostname
. hostname
palauttaa oikean lyhytnimen, hostname --fqdn
palauttaa odotetun FQDN: n, mutta hostname -A
palauttaa vanhan nimi. Muutin koneen IP-osoitteen varmistaaksesi, että se ei ollut ulkoista DNS-välimuistia.
Jos avaan pythonin ja suoritan
import socket print(socket.gethostname()) print(socket.getfqdn())
Molemmat palauttavat vanhan isäntänimen / fqdn, sama kuin hostname -A
Isäntänimen man -sivulta se näkyy --fqdn
ottaa vain lyhytnimen ja verkkotunnuksen ja yhdistää ne.
Näytä FQDN (Fully Qualified Domain Name). FQDN koostuu lyhyestä isäntänimestä ja DNS-verkkotunnus. Ellet käytä sidontaa tai NIS: ää isäntähakuihin, voit muuttaa FQDN: n ja DNS-toimialueen nimen (joka on osa FQDN: ää) / etc / hosts-tiedostossa.
Mitä eroa näillä komennoilla on ja kuinka voin paremmin selvittää, miksi vanha isäntänimi tarttuu.
Kommentit
- Entä tietty Linux / Unix ja version tunniste. Joissakin tapauksissa nämä tiedot sijaitsevat muualla ja ne asetetaan käynnistyshetkellä e muista kokoonpanotiedostoista.
- Red Hat Enterprise Linux 6.4
Vastaa
hostname
palauttaa määritetyn isäntänimen tai solmunimen. Käytännössä se voi olla joko lyhyt nimi (useimmissa kokoonpanoissa) tai pitkä nimi (yleensä tässä tapauksessa FQDN). Lyhyen nimen antaa hostname --short
.
hostname --fqdn
palauttaa FQDN: n, joka on gethostbyname
solmunimessä (kuten uname
-järjestelmäkutsu palauttaa, katso uname(2)
-sivu).
hostname -A
on jotain hämärää ja ei-intuitiivista. Erityisesti nimestään ja kuvauksestaan huolimatta (”kaikki FQDN: t”), se ei anna standardia FQDN: ää suunnitellusti. Siksi sanoisin: älä käytä sitä. Yksi syy on, että se menettää koneen kelvolliset IP-osoitteet, kuten 127.0.1.1, johon FQDN voidaan liittää /etc/hosts
-tiedostoon (tämä on esimerkiksi oletusarvo esimerkiksi Debianin ja Ubuntun alla). = ”77b5a20083″>
menetelmä on, että IP-osoitteen käänteinen resoluutio ei välttämättä anna FQDN: ää; se voi olla vain lyhyt nimi.
Python-ongelmasi saattaa olla vika siellä. En tiedä. Ehdotan, että kokeilet seuraavaa Perl-komentosarjaa:
#!/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";
hostname -A
tarkastelee määritettyjä käyttöliittymiä ja korjaa ne päinvastoin (no, tämä on sen man-sivulla annettu tieto). 127.0.1.1 on oikea IP-osoite vastauksessani, ei 127.0.0.1. Se, että 127.0 .1.1 käytetään FQDN: ssä (127.0.0.1: n sijaan) on yksi syyhostname -A
-ongelmaan.hostname -f
käytä/etc/hosts
, kun taashostname -A
käytä DNS-hakua. Katso lisää täältä: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393strace hostname -A
nähdäksesi mitä tapahtuu.