ホスト名を変更したマシンがあります。 /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"; 

コメント

  • ホスト名-Aはどこで情報を取得しますか?システムにインストールされている他のソフトウェアで問題が発生し、ホスト名-Aが正しい名前を表示するまで'修正できませんでした。
  • ps、127.0.1.1アドレスを127.0.0.1に修正しようとしましたが、編集には最低6文字が必要です。修正できるかもしれません。
  • @Rothgar hostname -Aは、構成されたインターフェースを調べて、それらを逆解決します(まあ、これはそのmanページに記載されている情報です)。127.0.1.1は私の答えの正しいIPアドレスであり、127.0.0.1ではありません。 hostname -Aの問題の原因の1つは(127.0.0.1ではなく).1.1がFQDNに使用されていることです。
  • @ vinc17:私は'ここではノード名が相対的であるとは思わない。主な違いはhostname -fを使用する/etc/hostsである。 div id = “77b5a20083″>

はDNSルックアップを使用します。詳細はこちら: bugs.debian.org/cgi-bin/bugreport.cgi?bug=718393

  • @ vinc17:run strace hostname -A何が起こるかを確認します。
  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です