Re: 自ホスト(名|アドレス)を取得 する汎用的な方法
河野真治 @ 琉球大学情報工学です。
In article <dms3p3$iks$1@caraway.media.kyoto-u.ac.jp>, Masanori HATA <hata@iname.com> writes
> 題名の通り、質問なのですが、perl プログラムから、そのプログラムが実行さ
> れているマシンのホスト(名|アドレス)を知る「汎用的な(プラットホームに
> 依存しない)」方法はあるでしょうか?
それはTCP/IPには依存するわけだけど、それはいいわけね...
> 例えば、Linux(少なくとも自分が利用している ISP のサーバの環境の場合)だ
> と、環境変数として取得できるようなので、$ENV{'HOSTNAME'} を利用すればよ
> かったりするのですが、Windows 2000 ではこの手法は使えません。
Linux でも、それは一般的ではないです。たぶん、shell か login script
で、export HOSTNAME=`hostname` とかしているんじゃないかな。
さらに、
> ちなみに、何をしたくてこんなことをしているのかというと、メールの
> Message-ID ヘッダ(RFC 2822 3.6.4 参照)を作成するプログラムを書こうと
> 思っています。そこで id-right の文字列としてホストアドレスを自動で使える
> ようにしたいわけです。
このような用途では hostname を一般的には信用するわけにはいきません...
NAT の中にあるホストかも知れませんよね。
ISPのサーバのような場合で、大域アドレスを持っているホストだ
と保証できるなら、
use Sys::Hostname;
$host = hostname;
ってのが使えるようです。
というと、それを喜んで使うのが目に見えますが、config ファイ
ルなどで、ユーザに指定させてしまうのが簡単で確実だと思います。
postfix/sendmail などの設定でも、hostname で取って来れないなら
そうするようになってます。そうすれば、NAT環境でも使えます。
あと、Message-ID は smtp server が自動的に割り振ってくれます。
それに任せると言う手もあります。なんだが、自分が出した Message-ID
がわからなくなるのが欠点だな。smtp で接続したときに、取って来る
プロトコルとかあったっけ?
---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735