我使用crossbar.io撰寫聊天。我們有幾個聊天節點。 我需要寫關於每個節點的統計信息,這就是爲什麼我需要獲取運行特定節點的主機名。如何獲得Crossbar.io主機名?
是否有可能從組件實例獲取主機名?
我使用crossbar/autobahn和python 3.4的最新版本。
期望得到 - 127.0.0.1如果我使用本地環境。
我使用crossbar.io撰寫聊天。我們有幾個聊天節點。 我需要寫關於每個節點的統計信息,這就是爲什麼我需要獲取運行特定節點的主機名。如何獲得Crossbar.io主機名?
是否有可能從組件實例獲取主機名?
我使用crossbar/autobahn和python 3.4的最新版本。
期望得到 - 127.0.0.1如果我使用本地環境。
只需使用套接字庫:
import socket
hostname = socket.gethostname()
在你的機器的情況下,已解析的主機名與嘗試:
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]
相同的結果得到了172.17.0.1而不是127.0.0.1 –
它不會爲這項工作,得到了錯誤的主機名 –
@AleksandrYarushevsky你是什麼意思是「錯誤的主機名」嗎? – user312016
現在我運行本地主機,我得到172.17.0.1而不是127.0.0.1 –