python通过ip获取mac地址_Python3根据IP地址获取MAC地址

该博客介绍了一种使用Python根据IP地址获取MAC地址的方法,通过操作系统的内置命令(在Windows和Linux上不同)来实现。作者提供了一个IP2MAC类,包含`__forWin`和`__forLinux`两个内部方法,分别处理不同操作系统下的MAC地址获取。示例代码中展示了如何使用这个类来获取特定IP地址的MAC。
摘要由CSDN通过智能技术生成

这是一种笨方法,是根据系统内置命令去获取的。我只是抛砖引玉,希望有人给我分享更好的代码,比如通过ARP协议去获取MAC地址?

1.[代码][Python]代码

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import os

import platform

import re

class IP2MAC:

def __init__(self):

self.patt_mac = re.compile('([a-f0-9]{2}[-:]){5}[a-f0-9]{2}', re.I)

def getMac(self, ip):

sysstr = platform.system()

if sysstr == 'Windows':

macaddr = self.__forWin(ip)

elif sysstr == 'Linux':

macaddr = self.__forLinux(ip)

else:

macaddr = None

return macaddr or '00-00-00-00-00-00'

def __forWin(self, ip):

os.popen('ping -n 1 -w 500 {} > nul'.format(ip))

macaddr = os.popen('arp -a {}'.format(ip))

macaddr = self.patt_mac.search(macaddr.read())

if macaddr:

macaddr = macaddr.group()

else:

macaddr = None

return macaddr

def __forLinux(self, ip):

os.popen('ping -nq -c 1 -W 500 {} > /dev/null'.format(ip))

result = os.popen('arp -an {}'.format(ip))

result = self.patt_mac.search(result.read())

return result.group() if result else None

if __name__ =='__main__':

g = IP2MAC()

print(g.getMac('192.168.112.80'), g.getMac('192.168.1.254'), sep='\n')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值