Mam komputer, na którym zmieniłem nazwę hosta. Zmieniłem to w /etc/hosts, /etc/sysconfig/network i poleceniu hostname. hostname zwraca poprawną krótką nazwę, hostname --fqdn zwraca oczekiwaną nazwę FQDN, ale hostname -A zwraca starą Nazwa. Zmieniłem adres IP maszyny, aby upewnić się, że nie jest to zewnętrzna pamięć podręczna DNS.

Jeśli otworzę Pythona i uruchomię

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

Oba zwracają starą nazwę hosta / fqdn, taką samą jak hostname -A

Na stronie podręcznika nazwy hosta pojawia się --fqdn bierze tylko krótką nazwę i domenę i łączy je razem.

Wyświetl FQDN (Fully Qualified Domain Name). FQDN składa się z krótkiej nazwy hosta i Nazwa domeny DNS. Jeśli nie używasz bind lub NIS do wyszukiwania hostów, możesz zmienić FQDN i nazwę domeny DNS (która jest częścią FQDN) w pliku / etc / hosts.

Jaka jest różnica między tymi poleceniami i jak mogę lepiej rozwiązać problem, dlaczego stara nazwa hosta się zacina.

Komentarze

  • A co z konkretnym systemem Linux / unix i identyfikacją wersji. Są przypadki, w których te informacje znajdują się gdzie indziej i są konfigurowane podczas uruchamiania e z innych plików konfiguracyjnych.
  • Red Hat Enterprise Linux 6.4

Odpowiedź

hostname zwraca skonfigurowaną nazwę hosta lub nazwę węzła. W praktyce może to być nazwa krótka (w większości konfiguracji) lub nazwa długa (w tym przypadku zwykle FQDN). Krótka nazwa jest nadawana przez hostname --short.

hostname --fqdn zwraca FQDN, czyli gethostbyname w nazwie węzła (zwróconej przez wywołanie systemowe uname, patrz uname(2) strona podręcznika).

hostname -A to coś niejasnego i nieintuicyjnego. W szczególności, pomimo swojej nazwy i opisu („wszystkie FQDNs”), z założenia nie podaje standardowej FQDN. Dlatego powiedziałbym: nie używaj go. Jednym z powodów jest brak prawidłowych adresów IP maszyny, takie jak 127.0.1.1, z którym nazwa FQDN może być powiązana w pliku /etc/hosts (jest to obecnie ustawienie domyślne, na przykład w Debianie i Ubuntu). Kolejny problem z hostname -A metoda polega na tym, że odwrotna rozdzielczość adresu IP nie musi koniecznie dawać nazwy FQDN; może to być po prostu krótka nazwa.

Jeśli chodzi o twój problem z Pythonem, może to być błąd. Nie wiem. Sugeruję wypróbowanie następującego skryptu Perla:

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

Komentarze

  • Skąd nazwa hosta -A pobiera informacje? Miałem problem z innym oprogramowaniem zainstalowanym w systemie, którego nie mogłem ' naprawić, dopóki nazwa hosta -A nie pokazała prawidłowej nazwy.
  • ps, próbowałem naprawić twój adres 127.0.1.1 na 127.0.0.1, ale zmiany wymagają minimum 6 znaków. Może możesz to naprawić.
  • @Rothgar hostname -A patrzy na skonfigurowane interfejsy i odwraca je (cóż, to są informacje podane na jego stronie podręcznika). 127.0.1.1 to właściwy adres IP w mojej odpowiedzi, a nie 127.0.0.1. Fakt, że 127.0 .1.1 jest używany dla nazwy FQDN (zamiast 127.0.0.1) jest jedną z przyczyn problemu z hostname -A.
  • @ vinc17: Nie ' nie sądzę, że nazwa węzła jest tutaj względna. Główna różnica to hostname -f użyj /etc/hosts, podczas gdy hostname -A użyj wyszukiwania DNS. Zobacz więcej tutaj: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
  • @ vinc17: run strace hostname -A, aby zobaczyć, co się stanie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *