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"; 

kommentit

  • Mistä isäntänimi -A saa tietonsa? Minulla oli ongelmia muiden järjestelmään asennettujen ohjelmistojen kanssa, joita en voinut ' korjata, kunnes isäntänimi -A näytti oikeaa nimeä.
  • ps, yritin korjata 127.0.1.1-osoitteen 127.0.0.1-muotoon, mutta muokkaukset vaativat vähintään 6 merkkiä. Ehkä voit korjata sen.
  • @Rothgar 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 syy hostname -A -ongelmaan.
  • @ vinc17: En osaa ' ei usko, että solmunimi on tässä suhteellinen. Tärkein ero on hostname -f käytä /etc/hosts, kun taas hostname -A käytä DNS-hakua. Katso lisää täältä: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: suorita strace hostname -A nähdäksesi mitä tapahtuu.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *