python获取本机IP、MAC地址

本文介绍如何使用Python的socket和uuid模块来获取本地计算机的IP地址和MAC地址,提供了一个简单的方法来获取网络信息。

获取本机IP

使用模块:socket

import socket

def get_host_ip():
    """
    查询本机ip地址
    """
    try:
        s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        s.connect(('8.8.8.8',80))
        ip=s.getsockname()[0]
    finally:
        s.close()

    return ip


if __name__ == '__main__':
    print(get_host_ip())

输出:

runfile('C:/Users/Dcp/.spyder/temp.py', wdir='C:/Users/Dcp/.spyder')
192.168.1.102

获取本机MAC地址:

使用模块:uuid

import uuid
def get_mac_address(): 
    mac=uuid.UUID(int = uuid.getnode()).hex[-12:] 
    return ":".join([mac[e:e+2] for e in range(0,11,2)])

#Run
get_mac_address()

 

### 使用Python获取本地机器的IPMAC地址 #### 获取本机IP地址 为了获得本机IPv4地址,可以通过`socket`库来实现。下面是一段用于取得当前设备IP地址的小型函数: ```python import socket def get_ip_address(): hostname = socket.gethostname() ip_address = socket.gethostbyname(hostname) return ip_address ``` 此方法利用了`gethostname()`来得到计算机名称,并进一步调用`gethostbyname()`转换成对应的IP地址[^5]。 对于更全面的支持(包括处理多网络接口的情况),可以采用如下改进版代码片段: ```python import netifaces as ni def get_all_ipv4_addresses(): interfaces = ni.interfaces() ipv4_addrs = [] for interface in interfaces: try: addr = ni.ifaddresses(interface)[ni.AF_INET][0]['addr'] if addr != '127.0.0.1': # 排除回环地址 ipv4_addrs.append(addr) except KeyError: pass return ipv4_addrs ``` 这段代码依赖于第三方模块`netifaces`,它能够遍历所有的网络接口并提取有效的IPv4地址列表[^1]。 #### 获取MAC地址 针对MAC地址的检索,则有多种途径可选。这里提供一种基于标准库的方式: ```python import uuid def get_mac_address(): mac_num = hex(uuid.getnode()).replace('0x', '').upper() mac_str = '-'.join(mac_num[i:i+2] for i in range(0, 12, 2)) return mac_str ``` 上述代码通过UUID机制间接访问硬件信息,最终返回格式化的MAC字符串表示形式[^3]。 另一种更为直观的方法适用于Windows平台下的命令行工具执行环境;而对于Linux/Unix系统而言,也可以考虑读取特定路径下保存的相关文件内容以直接获取MAC地址[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值