前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python获取主机hostname

Python获取主机hostname

原创
作者头像
法号戒糖
发布2024-01-10 17:36:25
1640
发布2024-01-10 17:36:25
举报

一、前置场景

最近在开发一个运行在不同PC上的agent,agent启动时需要向server注册自己,我暂定注册信息包含:MAC地址、IP、主机名。

但如何获取主机名就成了一个待解决的问题。

我试着在网上搜了一下相关资料,并且亲身测试了一下可行性与平台兼容性。

目前共找到4种方法,均已实测有效。

综合考虑可靠性与跨平台,建议使用platform.node()Socket.gethostname()

二、实现方案

1. os模块

不支持Windows平台,Linux亲测可用

windows平台下使用将会报错: AttributeError: module 'os' has no attribute 'uname'

代码语言:python
复制
import os,platform
info = os.uname()
hostname = info.nodename

2. platform模块

支持跨平台,亲测Windows与Linux下可用。

代码语言:python
复制
import platform
hostname = platform.node()
```

3. Socket模块

3.1 Socket.gethostname()

通过Socket.gethostname()直接获取

支持跨平台,亲测Windows与Linux下可用。

代码语言:python
复制
import socket
hostname = socket.gethostname()
```
3.2 Socket.gethostbyaddr()

通过IP地址获取,在某些场景下适用,如已知本机或远程主机的ip,需获取hostname

支持跨平台,亲测Windows与Linux下可用。

但此方法不可靠,在某些场景下会报错:socket.herror: [Errno 11004] host not found

代码语言:python
复制
import socket
hostname = socket.gethostbyaddr("8.8.8.8")[0]
```

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前置场景
  • 二、实现方案
    • 1. os模块
      • 2. platform模块
        • 3. Socket模块
          • 3.1 Socket.gethostname()
          • 3.2 Socket.gethostbyaddr()
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com