python获取本地电脑的ip和mac地址

  1. 获取 IP 地址
  • 在 Python 中,可以使用socket模块来获取本地 IP 地址。以下是一个简单的示例代码:

登录后复制

python 复制代码
import socket

def get_local_ip():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))
        ip = s.getsockname()[0]
        s.close()
        return ip
    except Exception as e:
        print(f"获取IP地址出错: {e}")
        return None
  • 解释:

  • 首先创建了一个UDP套接字(socket.socket(socket.AF_INET, socket.SOCK_DGRAM))。这里AF_INET表示使用 IPv4 协议族,SOCK_DGRAM表示UDP套接字类型。
  • 然后通过连接到一个外部的 IP 地址(这里使用的是谷歌的DNS服务器8.8.8.880端口),这个连接操作实际上是为了获取本地分配的 IP 地址。因为当你连接到外部服务器时,操作系统会将本地合适的 IP 地址绑定到这个套接字上。
  • 接着使用getsockname()[0]来获取套接字的本地 IP 地址。最后关闭套接字并返回 IP 地址。如果出现异常,会打印错误信息并返回None
  1. 获取 MAC 地址
  • 获取 MAC 地址相对复杂一些,因为不同的操作系统获取方式有所不同。在 Windows 和 Linux 系统下可以使用uuid模块结合系统命令来获取。以下是一个跨平台(Windows 和 Linux)获取 MAC 地址的示例:

登录后复制

python 复制代码
import uuid
import platform
import subprocess

def get_mac_address():
    if platform.system() == "Windows":
        try:
            # 在Windows下使用命令获取MAC地址
            output = subprocess.check_output("ipconfig /all").decode("utf-8")
            for line in output.splitlines():
                if "物理地址" in line:
                    mac_address = line.split(":")[-1].strip()
                    return mac_address
        except subprocess.CalledProcessError as e:
            print(f"获取MAC地址出错: {e}")
            return None
    elif platform.system() == "Linux":
        try:
            mac_address = uuid.getnode()
            mac_address = ':'.join(("%012X" % mac_address)[i:i + 2] for i in range(0, 12, 2))
            return mac_address
        except Exception as e:
            print(f"获取MAC地址出错: {e}")
            return None
    else:
        print("不支持的操作系统")
        return None
  • 解释:

  • 首先通过platform.system()来判断操作系统类型。
  • 在 Windows 下:
  • 使用subprocess.check_output("ipconfig /all")来执行ipconfig /all命令,这个命令会返回网络配置的详细信息。
  • 将输出的结果使用utf - 8编码进行解码后,逐行检查。当找到包含 "物理地址"(这是 Windows 下 MAC 地址对应的中文名称)的行时,通过分割字符串获取 MAC 地址部分,并去除空格后返回。如果执行命令出错,会打印错误信息并返回None
  • 在 Linux 下:
  • 使用uuid.getnode()来获取网络接口的 MAC 地址,这个函数返回的是一个整数表示的 MAC 地址。
  • 然后通过将这个整数转换为十六进制字符串,并按照一定的格式(每两位用:分隔)来得到常见的 MAC 地址格式并返回。如果出现异常,会打印错误信息并返回None
  • 如果是其他不支持的操作系统,会打印提示信息并返回None

你可以使用以下方式调用这些函数:
登录后复制

python 复制代码
if __name__ == "__main__":
    local_ip = get_local_ip()
    mac_address = get_mac_address()
    print(f"本地IP地址: {local_ip}")
    print(f"MAC地址: {mac_address}")

获取本地电脑的 MAC 地址的 Python 代码

如何在 Python 中实现网络通信?

除了 Python,还有哪些语言可以获取本地电脑的 IP 和 MAC 地址?

相关推荐
CoreTK_EMC13 分钟前
机器人信号线缆屏蔽:解决伺服干扰、通讯异常的工程落地思路
网络·机器人·芯通康·机器人信号线缆屏蔽·工业机器人线缆 emc·机器人接地屏蔽·ethercat 通讯干扰
阿童木写作43 分钟前
跨境电商图片翻译工具推荐:批量图片翻译+视频字幕翻译+智能抠图
python·macos·音视频·xcode
cui_ruicheng1 小时前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain
论迹复利1 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
circuitsosk2 小时前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
张宇Joaquin2 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
shehuiyuelaiyuehao2 小时前
算法31,前缀和,可被k整除的子数组
数据结构·python·算法
wixzjsh2 小时前
TCP通信与HTTP协议学习笔记:粘包、三次握手、四次挥手与C/S、B/S模型
学习·tcp/ip·http
宸津-代码粉碎机2 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
测试19983 小时前
如何用appium搭建Android自动化测试框架?
自动化测试·软件测试·python·测试工具·职场和发展·appium·测试用例