ホスト名、ホスト名--fqdn、ホスト名-Aの違いは何ですか

ホスト名、ホスト名--fqdn、ホスト名-Aの違いは何ですか

ホスト名が変更されたコンピュータがあります。/etc/hosts/etc/sysconfig/networkおよびコマンドを使用して変更しましたhostnamehostname正しい短い名前を返し、hostname --fqdn予想されるFQDNを返しますが、hostname -A古い名前を返します。外部DNSをキャッシュしないようにコンピュータのIPアドレスを変更しました。

Pythonを開いて実行すると

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

どちらも古いホスト名/ fqdnを返します。hostname -A

--fqdnホスト名のマニュアルページを見ると、短い名前とドメインのみをインポートして一緒に使用するように見えます。

FQDN(完全修飾ドメイン名)を表示します。 FQDN は、短いホスト名と DNS ドメイン名で構成されます。ホストルックアップにバインディングまたはNISを使用しない限り、/ etc / hostsファイルでFQDNおよびDNSドメイン名(FQDNの一部)を変更できます。

これらのコマンドの違いは何で、古いホスト名がまだ存在するのかをよりよく解決する方法は何ですか?

ベストアンサー1

hostname設定されたホスト名またはノード名を返します。実際には、短い名前(ほとんどの構成では)または長い名前(この場合は通常FQDN)です。略語はで表示されますhostname --short

hostname --fqdnノード名のFQDNを返しますgethostbynameunameシステムコールによって返された、uname(2)マニュアルページを参照)。

hostname -Aあいまいで直感的ではありません。特に、名前と説明(「すべてのFQDN」)にもかかわらず、標準のFQDNを提供するように設計されていません。だから私はそれを使用しないように言いたいと思います。 1つの理由は、FQDNがファイルに接続できる127.0.1.1などのシステムの有効なIPアドレスが欠落しているためです/etc/hosts(たとえば、これは現在DebianとUbuntuのデフォルトです)。このアプローチのもう1つの問題hostname -Aは、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";

おすすめ記事