pythonでホスト名を取得する。

ホスト名の取得方法はいくつかあるようです。

下記で簡単に取得できます。

ホスト名を取得

 

ホスト名はどこからとってるのかなと調べてたら

こんなpythonの実行もあるのか!

github.com

 

python 実行する時に -c でスクリプトを実行できるんですね。

これは便利かも。

[root@hermes ~]# python -c 'import socket; print socket.getfqdn()'
localhost.localdomain
[root@hermes ~]# python -c 'import socket; print socket.gethostname()'
ansible.tld

 

結局どこを取ってるかはわかってない。。。

ーーー

(追記)

調査してみた

ホスト名がどこから読んでいるか

 

hostnameコマンドでホスト名変えても echo $HOSTNAMEや、
/etc/sysconfig/networkのHOSTNAMEも変わっていなかったので
どうやら「内部的なhostname」を持っていてこれが優先されるようだ。

gistにも書いたけど、/etc/hostsのホスト名はドットが入ってないと
ホスト名として取ってこないってのは知らなかったなあ。

※/etc/hosts は service network reload とかしなくても変更がそのまま反映されたから

getfqdn()は直接/etc/hostsを読みに行ってるみたいね。


あと検証する上でできなかったこととして、
検証は会社のawsで(こっそり)やったんだけど
/etc/sysconfig/networkのHOSTNAMEを変更しても、再起動する際に元に戻って
起動してしまうのでここの影響はわからなかった。

 

あと疑問なんだけど/etc/hostsのホスト名を変えていくと
なんか変な文字(連続?アンダーバー?)を入れると、ホスト名もlocalhost.localdomainも
取ってくるのをやめてgethostname()でホスト名を取ってきているようだった。

その条件がなんなのかしつこいくらいやりなおしてみても
条件がわからなかった。
これがけっこう心残り。

文字数?連続文字?

うーんなんだろな

わかんね

 

 

Pythonプロフェッショナルプログラミング 第3版

Pythonプロフェッショナルプログラミング 第3版

 

 

 

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)