Van egy gépem, amelynek megváltoztattam a hosztnevét. /etc/hosts, /etc/sysconfig/network és hostname paranccsal módosítottam. A hostname a helyes rövid nevet adja vissza, a hostname --fqdn a várható FQDN-t adja vissza, de a hostname -A egy régi név. Megváltoztattam a gép IP-címét, hogy megbizonyosodjak róla, hogy nem volt-e külső DNS-gyorsítótár.

Ha megnyitom a python-t és futtatom

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

Mindkettő a régi hosztnevet / fqdn adja vissza, ugyanaz, mint a hostname -A

A hosztnév man oldalon megjelenik --fqdn csak felveszi a rövid nevet és a tartományt, és összerakja őket.

Az FQDN (teljesen minősített tartománynév) megjelenítése. Az FQDN egy rövid hosztnévből és a DNS-tartománynév. Hacsak nem kötést vagy NIS-t használ a gazdakereséshez, megváltoztathatja az FQDN-t és a DNS-tartománynevet (amely az FQDN része) az / etc / hosts fájlban.

Mi a különbség ezek között a parancsok között, és hogyan tudom jobban elhárítani a régi hosztnév megmaradásának okait.

Megjegyzések

  • Mi a helyzet az adott linux / unix és verzió azonosítóval. Vannak esetek, amikor ezek az információk máshol találhatók, és a rendszerindításkor vannak beállítva e más konfigurációs fájlokból.
  • Red Hat Enterprise Linux 6.4

Válasz

hostname visszaadja a konfigurált gazdagép- vagy csomópontnevet. A gyakorlatban lehet akár rövid név (a legtöbb konfigurációban), akár hosszú név (ebben az esetben általában az FQDN). A rövid nevet a hostname --short adja.

hostname --fqdn az FQDN-t adja vissza, amely gethostbyname a csomópontnéven (amint azt a uname rendszerhívás visszaadja, lásd: uname(2) man oldal).

hostname -A valami homályos és nem intuitív. Különösen a neve és leírása (“minden FQDN”) ellenére nem adja meg a szabványos FQDN-t terv szerint. Ezért azt mondanám: ne használja. Az egyik oka az, hogy hiányzik a gép érvényes IP-címe, mint például a 127.0.1.1, amelyhez az FQDN társítható a /etc/hosts fájlban (ez például jelenleg az alapértelmezett a Debian és az Ubuntu alatt). = “77b5a20083″>

módszer szerint az IP-cím fordított felbontása nem feltétlenül ad meg FQDN-t; ez csak egy rövid név lehet.

A python problémájával kapcsolatban ott lehet egy hiba. Nem tudom. Javaslom, hogy próbálja ki a következő Perl szkriptet:

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

Megjegyzések

  • Tehát hol kapja meg az állomásnév -A adatait? Problémám volt a rendszerre telepített más szoftverekkel, amelyeket nem tudtam kijavítani ' addig, amíg az -A hosztnév nem adta meg a helyes nevet.
  • ps, megpróbáltam a 127.0.1.1-es címét 127.0.0.1-re javítani, de a szerkesztésekhez legalább 6 karakter szükséges. Talán meg tudja javítani.
  • @Rothgar hostname -A megnézi a beállított interfészeket és visszafordítja azokat (nos, ez az információ található a man oldalán). A 127.0.1.1 a megfelelő IP-cím a válaszomban, nem a 127.0.0.1. Az a tény, hogy a 127.0 .1.1 az FQDN-hez (a 127.0.0.1 helyett) a hostname -A probléma egyik oka.
  • @ vinc17: I don ' nem gondolja, hogy a csomópontnév itt relatív. A fő különbség hostname -f a /etc/hosts használata, míg div id = “77b5a20083″>

használja a dns keresést. További információ itt: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393

  • @ vinc17: futtassa strace hostname -A, hogy lássa, mi történik.
  • Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük