Ik heb een machine waarvan ik de hostnaam heb gewijzigd. Ik heb het gewijzigd in /etc/hosts, /etc/sysconfig/network, en met hostname commando. hostname retourneert de juiste korte naam, hostname --fqdn retourneert de verwachte FQDN, maar hostname -A retourneert een oude naam. Ik heb het IP-adres van de machine gewijzigd om er zeker van te zijn dat het geen externe DNS-cache was.

Als ik python open en draai

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

Beiden geven de oude hostnaam / fqdn terug, hetzelfde als hostname -A

Van de hostnaam man-pagina verschijnt --fqdn neemt gewoon de korte naam en het domein en voegt ze samen.

Geef de FQDN (Fully Qualified Domain Name) weer. Een FQDN bestaat uit een korte hostnaam en de DNS-domeinnaam. Tenzij u bind of NIS gebruikt voor hostzoekopdrachten, kunt u de FQDN en de DNS-domeinnaam (die deel uitmaakt van de FQDN) in het bestand / etc / hosts wijzigen.

Wat is het verschil tussen deze commandos en hoe kan ik beter oplossen waarom de oude hostnaam blijft hangen.

Opmerkingen

  • Hoe zit het met de specifieke linux / unix en versie-identificatie. Er zijn gevallen waarin deze informatie zich ergens anders bevindt en wordt ingesteld tijdens het opstarten e uit andere configuratiebestanden.
  • Red Hat Enterprise Linux 6.4

Antwoord

hostname geeft de geconfigureerde hostnaam of knooppuntnaam terug. In de praktijk kan het een korte naam zijn (in de meeste configuraties) of een lange naam (normaal gesproken de FQDN in dit geval). De korte naam wordt gegeven door hostname --short.

hostname --fqdn retourneert de FQDN, die op de knoopnaam (zoals geretourneerd door de uname systeemaanroep, zie uname(2) man-pagina).

hostname -A is iets obscuurs en niet-intuïtief. In het bijzonder, ondanks zijn naam en beschrijving (“alle FQDNs”), geeft het niet de standaard FQDN, door het ontwerp. Daarom zou ik zeggen: gebruik het niet. Een reden is dat het geldige IP-adressen van de machine mist, zoals 127.0.1.1, waarmee de FQDN kan worden geassocieerd in het /etc/hosts -bestand (dit is momenteel de standaardinstelling onder bijvoorbeeld Debian en Ubuntu). Een ander probleem met de hostname -A methode is dat de omgekeerde resolutie van een IP-adres niet noodzakelijk een FQDN oplevert; het kan gewoon een korte naam zijn.

Wat betreft uw probleem met python, het kan daar een bug zijn. Ik weet het niet. Ik stel voor dat je het volgende Perl-script probeert:

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

Reacties

  • Dus waar haalt hostnaam -A zijn informatie vandaan? Ik had een probleem met andere software die op het systeem was geïnstalleerd en die ik niet ' kon repareren totdat hostnaam -A de juiste naam liet zien.
  • ps, ik heb geprobeerd je 127.0.1.1-adres te corrigeren naar 127.0.0.1, maar voor bewerkingen zijn minimaal 6 tekens nodig. Misschien kun je het repareren.
  • @Rothgar hostname -A kijkt naar de geconfigureerde interfaces en lost ze omgekeerd op (nou, dit is de informatie gegeven in de man-pagina). 127.0.1.1 is het juiste IP-adres in mijn antwoord, niet 127.0.0.1. Het feit dat 127.0 .1.1 wordt gebruikt voor de FQDN (in plaats van 127.0.0.1) is een van de oorzaken van het probleem met hostname -A.
  • @ vinc17: I don ' denk niet dat de knoopnaam hier relatief is. Het belangrijkste verschil is hostname -f gebruik /etc/hosts, terwijl hostname -A gebruik dns lookup. Zie hier meer: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: run strace hostname -A om te zien wat er gebeurt.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *