home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Java/ホスト名, マシン名を取得するメモ

Java/ホスト名, マシン名を取得するメモ

Java / ホスト名, マシン名を取得するメモ
id: 1360 所有者: msakamoto-sf    作成日: 2015-03-01 00:30:01
カテゴリ: Java 

実は以前調べたことがあり、間違って System.getenv("HOSTNAME") を使ってしまった。
Facebookで他のエンジニアがLinux前提で /proc/sys/kernel/hostname を読み込む方法使ってたのを見かけ、HOSTNAMEを使う方法を教えたらうまく動かず、今回改めて調べ直したら見事にHOSTNAME使うのはbash依存ということが判明orz.

"InetAddress.getLocalHost().getHostName()"はマシンのネットワーク設定, DNS等によっては失敗したり、期待したものとは異なるものが返ってくる可能性がある。

System.getenv("HOSTNAME") はNGだった。というのは、"HOSTNAME"は厳密にはbashが設定する「変数」であり、「環境変数」ではない。そのため、bash系の設定ファイルによっては、HOSTNAMEが環境変数としてexportされずに、取得できないケースがある。

参考:

unixであれば Runtime.getRuntime().exec("hostname") が無難。これはネットワーク設定ではなくkernelレベルで設定されたマシン名を返す。

Linuxの場合なら、 /proc/sys/kernel/hostname をJavaで直接読み込んでも良い。hostnameコマンドも結局このファイルを読み書きしてるだけ。

参考:

Windowsの場合は、System.getenv("COMPUTERNAME") が使えるらしいが、厳密な調査は出来てない。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-03-01 00:38:59
md5:2ce3dbd031b448a5bb1bb9b84e0afb96
sha1:6d23d3f3138b276a57be1dbe7b7bfb130056460f
コメント
コメントを投稿するにはログインして下さい。