ホスト名を変更したマシンがあります。 /etc/hosts
、/etc/sysconfig/network
、およびhostname
コマンドで変更しました。 hostname
は正しい短縮名を返し、hostname --fqdn
は予想されるFQDNを返しますが、hostname -A
は古い名前を返します名前。マシンのIPアドレスを変更して、外部DNSキャッシュではないことを確認しました。
pythonを開いて実行した場合
import socket print(socket.gethostname()) print(socket.getfqdn())
どちらも、hostname -A
と同じ古いホスト名/ fqdnを返します。
ホスト名のマニュアルページから、--fqdn
と表示されます。ショートネームとドメインを取得してまとめるだけです。
FQDN(完全修飾ドメイン名)を表示します。FQDNは、短いホスト名とDNSドメイン名。ホストルックアップにバインドまたはNISを使用していない限り、/ etc / hostsファイルでFQDNとDNSドメイン名(FQDNの一部)を変更できます。
これらのコマンドの違いと、古いホスト名が残っている理由をより適切にトラブルシューティングするにはどうすればよいですか。
コメント
- 特定のlinux / unixとバージョンIDはどうですか。この情報が他の場所にあり、起動時に設定される場合があります。 e他の構成ファイルから。
- Red Hat Enterprise Linux 6.4
回答
hostname
は、構成されたホスト名またはノード名を返します。実際には、短い名前(ほとんどの構成)または長い名前(通常はこの場合はFQDN)のいずれかです。短い名前はhostname --short
で指定されます。
hostname --fqdn
はFQDNを返します。これは(uname
システムコールによって返されます。uname(2)
のマニュアルページを参照してください)。
hostname -A
は、あいまいで直感的ではありません。特に、その名前と説明(「すべてのFQDN」)にもかかわらず、設計上、標準のFQDNを提供していません。したがって、使用しないでください。1つの理由は、マシンの有効なIPアドレスが欠落していることです。 FQDNが/etc/hosts
ファイルで関連付けられている可能性がある127.0.1.1など(これは現在、たとえばDebianおよびUbuntuではデフォルトです)。
の方法では、IPアドレスの逆解決は必ずしもFQDNを与えるとは限りません。短い名前でもかまいません。
Pythonの問題に関しては、バグの可能性があります。わかりません。次のPerlスクリプトを試すことをお勧めします:
#!/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";
コメント
はDNSルックアップを使用します。詳細はこちら: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393
strace hostname -A
何が起こるかを確認します。
hostname -A
は、構成されたインターフェースを調べて、それらを逆解決します(まあ、これはそのmanページに記載されている情報です)。127.0.1.1は私の答えの正しいIPアドレスであり、127.0.0.1ではありません。hostname -A
の問題の原因の1つは(127.0.0.1ではなく).1.1がFQDNに使用されていることです。hostname -f
を使用する/etc/hosts
である。 div id = “77b5a20083″>