ドメイン名とともにホスト名を取得する方法は?


18

UNIX(Solaris)には、ホスト名とドメイン名を一緒に返すコマンドがありますか?

例えば:

hostname -> servername
domainname -> us.xyz.com

私は欲しい : servername.us.xyz.com


2
動作しprintf "%s" "$(hostname) $(domainname)"ませんか?
-jasonwryan

十分な私はそう願ってなることを「ホスト名-f」を使用してみてください
アビシェーク・クマールSrivastava氏

回答:


14

これは、resolv.confでドメインが正しく設定されている場合に機能します。NISドメイン名がDNSドメインと同じ場合、他の人が言及したdomainnameコマンドを使用することもできます。

echo `uname -n`.`awk '/^domain/ {print $2}' /etc/resolv.conf`

13

コマンド

hostname --fqdn (or -f)

私のシステムで(none)は実行時に取得するので、あなたが望むかしないかもしれないdomainname


8
hostname(1)Solaris 10(sun4v)および私が使用したすべての古いバージョンのマンページによると、--fqdn利用できません。ホスト名をに設定しようとし--fqdnます。安全のために非スーパーユーザーとして実行すると、「uname:設定名のエラー:所有者ではありません」と表示されます。これは明らかにSolarisのストックhostnameです。ポスターには、GNUツールセットがインストールされているかどうかは示されていません。
-Alexios

5

これも長年私を悩ませてきました。と言ってそれを回避します

$(hostname).$(domainname)

シェル関数またはエイリアスを定義できます:

fqdn () {
    echo $(hostname).$(domainname)
}

4
domainnnameNISを実行している場合、実際にNISドメインを報告します。これは、必ずしもDNSドメイン名と同じではありません。
マゼラン

いいえ、そうではありません。しかし、私はイエローページだったのでNISを回避/回避することができたので、それを知りませんでした。:)では、NISのドメイン名が異なる場合にドメイン名を取得する信頼できる方法ありますか?
-Alexios

NISを避けたことに祝福を感じるはずです。気に障る。そして、Mozilla Thunderbirdチームでさえ、2.0のデフォルトの返信先の「ドメイン名」出力に依存していたため、これを台無しにしました。実際のドメイン名には、hostname --fqdn | cut -d. -f2-4
マゼラン

1
これはLinuxでうまく機能します。Solarisでは、少なくとも10までホスト名を「--fqdn」にhostname --fqdn 設定しますが、これはおそらく悪い考えです(試してみる場合は、rootでないことを確認してください)。:) --fqdnSolaris 11でサポートされていますか?
-Alexios

1
オイ!誤ってホスト名を設定するのは苦痛であり、OPはSolarisと言いました。ありがとう!
マゼラン

4

チェックホスト名| awk '{print $ NF}'


2
非専門家については少し説明してください。
フォンブランド

概要/ usr / sbin / check-hostname説明check-hostnameスクリプトは、sendmail(1M)の移行支援ツールです。このスクリプトは、sendmail(1M)と同様の方法で、ローカルホストの完全修飾ホスト名(FQHN)を特定しようとします。check-hostnameがローカルホストのFQHNを特定できる場合、成功を報告します。それ以外の場合、check-hostnameは、FQHNを適切に決定できるようにシステムを再構成する方法を報告します。
ealgumby

/ usr / sbin / check-hostnameは、定義されている場合、SolarisシステムでFQDNを報告します。出力をawkにパイピングし、print $ NFを使用すると、check-hostnameからの出力の最後のフィールド(FQDN)が報告されます。これは、完全修飾ドメイン名を持っていることを前提として、コマンドラインからこの情報を取得するために知っている最も直接的な方法です。そうでない場合、これは機能しませんが、ホスト名があなたが持っているすべてであるように、私はそれを示す必要性を感じませんでした。Solarisを使用していない場合、これも機能しませんが、クエリはSolaris向けでした。
アールガンビー

真剣に、これがどのように質問に答えないのか理解できません。「unix(Solaris)には、ホスト名とドメイン名を一緒に返すコマンドがありますか?」答えは「はい」であり、そのコマンドは次のとおりです。awk '{print $ NF}'
ealgumby

3
本当の答えはあなたのコメントにあります。このWebサイトの目的は、1行のコマンドをほとんど説明せずに(または、場合によっては何も)説明することではありません。
rahmu

2

私はこれが古いスレッドであることを知っていますが、スクリプトでホスト名とドメイン名を別々にプルする必要がありました。

check-hostnameを使用するealgumbyの応答は、これまで見たことがなかったので、自分のニーズに合わせて大成功を収めようとしました。役に立つとマークしますが、どうしてもそうする担当者がいないようです。

check-hostnameからの出力をループして、次のようにドメインを設定します。

domain=`check-hostname | nawk -F\. '{for(i=2; i<NF;i++){printf $i"."}printf $NF"\n"}'`
fqdn=`hostname`'.'${domain}

1

とのための少しの回避策をhostname行いましたhost

$ host $(hostname -i) | awk '{print $NF }'

(私はCentosを使用していますが、どこでも動作するはずです)

末尾のドットなしでドメインを取得する:

$ host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'

私のubuntuで、hostname -iホスト名に対応するIPアドレスを印刷します。
アルケマール

はい、そうhost です。このIPをcommand に渡します。これはあなたにこのような何かを得るでしょう: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. AWKで私はある最後の列を取得hostname.domainname
user1314742

残念ながらhost $(hostname -i)、8つのホスト名のリストがあり、すべて同じIPを持ち、ホストに対応するホスト名はありません
-Archemar

hostコマンドのエイリアスがないことを確認しますか?コマンドにhostは次のエイリアスがあるようですhost -a
-user1314742

0

Solarisでは、これは私にとってはうまくいきました:バックティックのために申し訳ありませんが、それはqwertyキーボードの数字1の隣の逆引用符であるか、KSHで$(コマンド)を使用できます

getent hosts (backtick) /usr/bin/hostname (backtick)

または

getent hosts $(/usr/bin/hostname)

例:

root@melauto:[/]# getent hosts $(/usr/bin/hostname)

10.4.19.241     melauto.sro.vic.gov.au melauto loghost
root@melauto:[/]# 

getentは、/ etc / nsswitch.confで指定された現在の名前検索メカニズムを照会し、検索に一致する情報を返します。ここでは、で見つかった情報を返します/etc/hosts。にない別のホストのホスト情報を検索すると、/etc/hostsで定義されているDNSが検索されます。/etc/nsswitch.conf


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.