如何使用Python获取局域网内的IP与MAC地址

当我和一群朋友一起参加一场网络游戏对战时,有一个问题开始困扰我们:如何确保只有我们这群朋友在局域网内?我们想知道是否有其他人也连接到了我们的网络。一个念头突然冒出来,为什么不使用Python来检测局域网内所有的设备IP和MAC地址呢?这样我们就可以轻松识别并管理网络内的设备了。于是,我开始写下了以下的代码。

1. 开始之前

在开始之前,确保你的电脑上已经安装了win32apiwin32con这两个库。如果没有,你可以通过pip进行安装。

2. 弹出消息框

使用win32api我们可以轻松地在Windows上弹出一个消息框来显示信息。

def msgbox(msg, title='提醒'):
    win32api.MessageBox(0, msg, title, win32con.MB_OK)

3. 获取本机的IP和MAC地址

利用ipconfig命令,我们可以获取到本机的IP和MAC地址信息。

def local_ip_mac():  # 本机IP和MAC
    output = os.popen('ipconfig /all')
    for i in output:
        if '物理地址.' in i:
            mac = i.split(':')[1].strip()
        if 'IPV4' in i.upper() and '(' in i:
            ip = i.split(':')[1].split('(')[0].strip()
    if ip and mac:
        return [ip, mac]

4. 获取局域网内的IP和MAC地址

通过arp命令,我们可以查看局域网内所有设备的IP和MAC地址。

def lan_ip_mac():  #局域网IP和MAC
    ls = []
    output = os.popen('arp -a')
    for i in output:
        if '动态' in i:
            ip, mac, _ = i.strip().split()
            ls.append([ip, mac])
    return ls

5. 将结果写入到文件中

最后,我们将结果写入到一个txt文件中,以便后续查看。

if __name__ == '__main__':
    res = lan_ip_mac()
    res.append(local_ip_mac())
    print(res)

    # 结果写入文本
    txt = 'ip_mac.txt'
    out_txt = '\n'.join(['\t'.join(i) for i in res])
    with open(txt, 'w') as f:
        f.write(out_txt)

    msgbox(f'提取结果已保存到:{txt}')  #注释掉此行则不弹窗提醒

6. 结论

使用上述方法,我们可以轻松地获取到局域网内所有设备的IP和MAC地址,从而轻松管理网络设备。希望这篇教程能够帮助到你。

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:如何使用Python获取局域网内的IP与MAC地址

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年10月10日
下一篇 2023年10月10日

相关推荐

  • 如何优化Python数据库操作与连接

    在现代应用程序中,与数据库的交互是一个常见的任务。Python作为一门流行的编程语言,提供了多种方式来操作和连接数据库。然而,在处理大量数据或高并发请求时,数据库操作可能成为性能瓶颈。本教程将介绍如何优化P…

    2023年10月15日
    00
  • 解决最小化安装后无法获取IP地址的网络问题

    在Linux操作系统中,最小化安装是一种常见的部署方式,它只安装了最基本的系统组件,以减少系统的资源占用和安全风险。然而,在这种配置下,有时会出现网络无法正常工作的问题,特别是无法获取IP地址。本教程将教您…

    2023年10月30日
    00
  • 如何使用Python进行图像形状匹配

    你是否曾经想过如何使用Python来识别一张图片中特定形状的位置,或者进行图像中的物体匹配?在这个教程中,我们将向你展示如何使用Python和OpenCV库进行图像形状匹配。无论你是想识别图像中的某个标志性形状,还是…

    2023年9月14日
    00
  • 如何使用Python自动化RSS订阅、更新和邮件通知

    在信息爆炸的时代,获取最新的新闻、博客文章和内容更新变得至关重要。然而,每天手动检查各个网站的RSS订阅可能会非常繁琐。幸运的是,Python编程语言可以帮助我们自动化这个过程,从而轻松获取最新的信息,并通过…

    2023年10月24日
    00
  • Python中的`input`函数:Linux环境下为何无阻塞现象

    张杰是一个资深的Python开发者,他最近在Linux环境下遇到了一个令人困惑的问题:当他在socket通信中使用input函数时,该函数在某些情况下似乎不会阻塞。他很困惑,因为在其他情况下,input函数总是如预期那样工作的…

    2023年10月9日
    00
  • 如何轻松截取电脑屏幕上的任何部分?

    在这个数字化时代,我们经常需要与他人分享屏幕上的信息,无论是工作中的协作还是在社交媒体上展示有趣的内容。然而,有时候,系统自带的截图工具可能无法满足我们的需求,或者操作起来繁琐。因此,有一天,王大神…

    2023年9月26日
    00
  • 优化签到流程:如何轻松自动签到并获取验证码

    你是否曾经厌倦了每天手动签到的重复工作?是否希望能够自动化这一过程,省下宝贵的时间?在这篇文章中,我将向你展示如何通过Python编写一个自动签到脚本,使签到过程更加便捷和高效。我们将使用Python的requests…

    2023年10月14日
    00
  • 优化种子文件批量转换成磁力链的Python代码

    种子文件转换成磁力链是一个常见的需求,特别是对于那些喜欢分享和下载种子文件的人来说。在本教程中,我们将介绍如何优化已有的Python代码,以实现将多个种子文件批量转换成磁力链的功能。通过模块化、改进变量名…

    2023年12月18日
    00
  • 解决Python使用subprocess调用外部命令行程序报错

    在Python编程中,使用subprocess模块可以方便地调用外部命令行程序。然而,有时候我们可能会遇到一些报错或异常情况,需要及时解决。本教程将介绍如何解决Python使用subprocess调用外部命令行程序报错的常见问题。 …

    2024年3月17日
    00
  • 本地化Markdown文件中的图片:Python助力批量操作

    在互联网时代,Markdown已经成为写作、博客、文档等多个领域的标配。它简单、高效,但有时我们会遇到一个问题:插入的图片都是网络链接,一旦这些链接失效,文章中的图片就会消失。有没有方法可以快速地将这些在线…

    2023年10月8日
    00