2016-04-26 30 views
1

我使用crossbar.io撰寫聊天。我們有幾個聊天節點。 我需要寫關於每個節點的統計信息,這就是爲什麼我需要獲取運行特定節點的主機名。如何獲得Crossbar.io主機名?

是否有可能從組件實例獲取主機名?

我使用crossbar/autobahn和python 3.4的最新版本。

期望得到 - 127.0.0.1如果我使用本地環境。

回答

1

只需使用套接字庫:

import socket 

hostname = socket.gethostname() 
+0

它不會爲這項工作,得到了錯誤的主機名 –

+0

@AleksandrYarushevsky你是什麼意思是「錯誤的主機名」嗎? – user312016

+0

現在我運行本地主機,我得到172.17.0.1而不是127.0.0.1 –

1

在你的機器的情況下,已解析的主機名與嘗試:

import socket socket.gethostbyname(socket.getfqdn())

更新。這是一個更完整的解決方案,應該可以正常工作與所有操作系統:

import socket
print [l for l in ([ip for ip in socket.gethostbyname_ex( socket.gethostname())[2] if not ip.startswith('127.')][:1], [[(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close() ) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]]) if l][0][0]

+0

相同的結果得到了172.17.0.1而不是127.0.0.1 –