2016-04-26 87 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 –