最近在开发一个运行在不同PC上的agent,agent启动时需要向server注册自己,我暂定注册信息包含:MAC地址、IP、主机名。
但如何获取主机名就成了一个待解决的问题。
我试着在网上搜了一下相关资料,并且亲身测试了一下可行性与平台兼容性。
目前共找到4种方法,均已实测有效。
综合考虑可靠性与跨平台,建议使用platform.node()
与Socket.gethostname()
不支持Windows平台,Linux亲测可用
windows平台下使用将会报错: AttributeError: module 'os' has no attribute 'uname'
import os,platform
info = os.uname()
hostname = info.nodename
支持跨平台,亲测Windows与Linux下可用。
import platform
hostname = platform.node()
```
通过Socket.gethostname()
直接获取
支持跨平台,亲测Windows与Linux下可用。
import socket
hostname = socket.gethostname()
```
通过IP地址获取,在某些场景下适用,如已知本机或远程主机的ip,需获取hostname
支持跨平台,亲测Windows与Linux下可用。
但此方法不可靠,在某些场景下会报错:socket.herror: [Errno 11004] host not found
import socket
hostname = socket.gethostbyaddr("8.8.8.8")[0]
```
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。