PR

hostnameで取得できる情報とバージョン差異

IMG_9132-s

すでに知っている事と、先人たちのシェルスクリプトを眺めていると、一般的にはifconfig をパース(と言うかは知らないが)してIP アドレスを得たりしているようだ。何気なくhostname コマンドを見ると、IP アドレスを取得できることがわかった。しかし、バージョンによっても差異があるようなので、メモしておく。(画像はテキトー)

スポンサードリンク

コマンド概要

以下はUbuntu(たぶん12.04)にインストールされていたhostname のもので、バージョンはhostname 3.06 となっている。このバージョンでは、ありがたいことにI が利用でき、複数のIP アドレスを列挙することが可能になっているようだ。(逆に言うと、先人たちのスクリプトでは、古いバージョンに対応するためor その機能がなかったから、ifconfig から情報を取得しているのかもしれない)

$ hostname -h
Usage: hostname [-v] [-b] {hostname|-F file}         set host name (from file)
       hostname [-v] [-d|-f|-s|-a|-i|-y|-A|-I]             display formatted name
       hostname [-v]                                 display host name

       {yp,nis,}domainname [-v] {nisdomain|-F file}  set NIS domain name (from file)
       {yp,nis,}domainname [-v]                      display NIS domain name

       dnsdomainname [-v]                            display dns domain name

       hostname -V|--version|-h|--help               print info and exit

Program name:
       {yp,nis,}domainname=hostname -y
       dnsdomainname=hostname -d

Program options:
    -s, --short            short host name
    -a, --alias            alias names
    -i, --ip-address       addresses for the host name
    -I, --all-ip-addresses all addresses for the host
    -f, --fqdn, --long     long host name (FQDN)
    -A, --all-fqdns        all long host names (FQDNs)
    -d, --domain           DNS domain name
    -y, --yp, --nis        NIS/YP domain name
    -b, --boot             set default hostname if none available
    -F, --file             read host name or NIS domain name from given file

Description:
   This command can get or set the host name or the NIS domain name. You can
   also get the DNS domain or the FQDN (fully qualified domain name).
   Unless you are using bind or NIS for host lookups you can change the
   FQDN (Fully Qualified Domain Name) and the DNS domain name (which is
   part of the FQDN) in the /etc/hosts file.

使用例

Ubuntu 12.04 LTS

$ hostname -i
127.0.1.1
$ hostname -s
vmXXX
$ hostname -a
$ hostname -I
192.168.1.2 192.168.122.1
$ hostname -f
vmXXX
$ hostname -A
test.example.com vmXXX.local
$ hostname -d
$ hostname -y
hostname: Local domain name not set
$ hostname -b
vmXXX
$ hostname -F
$ hostname -v
vmXXX
$ hostname -V
hostname 3.06

CentOS release 5.8 (Final)

CentOS release 5.8 (Final) では、net-tools 1.60, hostname 1.100 (2001-04-14) となっており、念のため確認したが、これが最新版だと表示されていた。(比較のため、存在しないものも実行している)

# hostname -h
Usage: hostname [-v] {hostname|-F file}      set hostname (from file)
       domainname [-v] {nisdomain|-F file}   set NIS domainname (from file)
       hostname [-v] [-d|-f|-s|-a|-i|-y|-n]  display formatted name
       hostname [-v]                         display hostname

       hostname -V|--version|-h|--help       print info and exit

    dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y

    -s, --short           short host name
    -a, --alias           alias names
    -i, --ip-address      addresses for the hostname
    -f, --fqdn, --long    long host name (FQDN)
    -d, --domain          DNS domain name
    -y, --yp, --nis       NIS/YP domainname
    -F, --file            read hostname or NIS domainname from given file

   This command can read or set the hostname or the NIS domainname. You can
   also read the DNS domain or the FQDN (fully qualified domain name).
   Unless you are using bind or NIS for host lookups you can change the
   FQDN (Fully Qualified Domain Name) and the DNS domain name (which is
   part of the FQDN) in the /etc/hosts file.
# hostname
example.com
# hostname -s
example
# hostname -a
localhost localhost.localdomain
# hostname -i
127.0.0.1
# hostname -I
hostname: オプションが違います -- I
# hostname -A
hostname: オプションが違います -- A
# hostname -d
jp
# hostname -y
(none)
# hostname -b
hostname: オプションが違います -- b
# hostname -F
hostname: オプションには引数が必要です -- F
# hostname -V
net-tools 1.60
hostname 1.100 (2001-04-14)
# hostname -v
 gethostname()=`example.jp'
 example.jp

コメント