查找局域网树莓派raspberry的mac地址和ip

这篇具有很好参考价值的文章主要介绍了查找局域网树莓派raspberry的mac地址和ip。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

依赖python库:

pip install socket
pip install scapy

运行代码:

import socket
from scapy.layers.l2 import ARP, Ether, srp


def get_hostname(ip_address):
    try:
        return socket.gethostbyaddr(ip_address)[0]
    except socket.herror:
        # 未能解析主机名
        return None


def scan_network(ip_range):
    """
    扫描指定 IP 范围内的局域网,返回找到的 IP 和 MAC 地址列表
    """
    arp_request = ARP(pdst=ip_range)
    broadcast = Ether(dst="ff:ff:ff:ff:ff:ff")
    arp_request_broadcast = broadcast / arp_request
    answered_list = srp(arp_request_broadcast, timeout=1, verbose=False)[0]

    devices_list = []
    for sent, received in answered_list:
        hostname = get_hostname(received.psrc)
        devices_list.append({'ip': received.psrc, 'mac': received.hwsrc, 'hostname': hostname})
        print(f"IP: {received.psrc}, MAC: {received.hwsrc}, Hostname: {hostname}")  # DEBUG

    return devices_list


# 请替换成你的实际IP范围
network_devices = scan_network('192.168.1.1/24')

raspberry_pis = [device for device in network_devices if
                 device['hostname'] and 'raspberrypi' in device['hostname'].lower()]

for pi in raspberry_pis:
    print(f"Found Raspberry Pi! Hostname: {pi['hostname']}, IP: {pi['ip']}, MAC: {pi['mac']}")

以上代码的运行有个工具的依赖

  1. Npcap来源github
    Npcap来自官网

  2. Bonjour来自github(这个通常Windows会自带,如果没有就下载安装一下)

通常,上面这个代码可能无法正常显示raspberry的主机名,那就要结合ping -4 raspberrypi.local指令了,代码如下:

import socket
from scapy.layers.l2 import ARP, Ether, srp
import subprocess


def get_hostname(ip_address):
    try:
        return socket.gethostbyaddr(ip_address)[0]
    except socket.herror:
        # 未能解析主机名
        return None


def ping_host(hostname):
    try:
        subprocess.check_output(['ping', '-4', hostname])
        return True
    except subprocess.CalledProcessError:
        return False


def get_ip_from_hostname(hostname):
    try:
        return socket.gethostbyname(hostname)
    except socket.error:
        return None


def scan_network(ip_range):
    """
    扫描指定 IP 范围内的局域网,返回找到的 IP 和 MAC 地址列表
    """
    arp_request = ARP(pdst=ip_range)
    broadcast = Ether(dst="ff:ff:ff:ff:ff:ff")
    arp_request_broadcast = broadcast / arp_request
    answered_list = srp(arp_request_broadcast, timeout=1, verbose=False)[0]

    devices_list = []
    for sent, received in answered_list:
        hostname = get_hostname(received.psrc)
        devices_list.append({'ip': received.psrc, 'mac': received.hwsrc, 'hostname': hostname})
        print(f"IP: {received.psrc}, MAC: {received.hwsrc}, Hostname: {hostname}")  # DEBUG

    return devices_list


def find_raspberry_pi(devices_list):
    raspberry_pi_hostname = 'raspberrypi.local'
    if ping_host(raspberry_pi_hostname):
        raspberry_pi_ip = get_ip_from_hostname(raspberry_pi_hostname)
        for device in devices_list:
            if device['ip'] == raspberry_pi_ip:
                return device
    return None


# 请替换成你的实际IP范围
network_devices = scan_network('192.168.1.1/24')
raspberry_pi = find_raspberry_pi(network_devices)

if raspberry_pi:
    print(
        f"Found Raspberry Pi! Hostname: {raspberry_pi['hostname']}, IP: {raspberry_pi['ip']}, MAC: {raspberry_pi['mac']}")
else:
    print("Raspberry Pi not found on the network.")

看看运行结果:
查找局域网树莓派raspberry的mac地址和ip,tcp/ip,网络协议
已经顺利找到了局域网树莓派的ip~

如果还有什么问题,欢迎留言~文章来源地址https://www.toymoban.com/news/detail-807737.html

到了这里,关于查找局域网树莓派raspberry的mac地址和ip的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 局域网ip地址不够用-增加内网IP地址

    正常情况下局域网的ip地址只有254个,也就是192.168.1.1-192.168.1.254,随着现在联网的设备越来越多,比如监控,智能设备等都需要ip,稍微有点规模的公司254个ip可能就不够用了。哪怎么解决呢? 1、通过改子网掩码来增加内网ip   子网掩码为255.255.255.0时,路由器下面的内网ip最

    2024年02月09日
    浏览(41)
  • Mac上手动配置局域网IP

    拿起心爱的mac笔记本,去项目现场处理问题,项目现场使用的局域网,手动配置参考一下,实操有效哦!话不多说,上图… 步骤1:系统偏好设置 步骤2:选择网络 步骤3:选择右下角的添加服务 步骤4:配置IP地址,子网掩码和路由器(项目现场提供) 步骤5:配置DNS(项目现

    2024年02月13日
    浏览(30)
  • 局域网中快速查询有效IP地址的方法

    局域网中如何快速查询有效IP地址?通常在日常使用电脑中为了让工作站顺利通过局域网上网,我们常常需要先为其配置一个有效的IP地址,不过局域网中究竟还有哪些IP地址没有被使用呢?本文现在为各位网友总结几则快速为工作站分配IP地址的绝招,希望这些技巧能帮助大

    2024年02月05日
    浏览(34)
  • windows下查看同局域网其它主机MAC地址命令

    事情是这样的,今天去面试的时候笔试有一道题问到:Windows下使用什么命令来获知同局域网内其他主机的MAC地址。一开始看到感觉很熟悉,但是却答不上来。原来建站这么就,很多使用都要使用ping命令来测试网站的可连接性和速度等等。 但是这样的ping命令并不可以看到一台

    2024年02月05日
    浏览(52)
  • 判断两个 IP 地址是否在同一个局域网中

    如何判断两个 IP 地址是否在同一个局域网中, 核心知识点是出于一个网络号, 主要是通过本身ip 与 所处的子网掩码进行 计算处理是否处于同一个局域网中(在 TCP/IP协议规则里面,IP地址与子网掩码做与运算)。

    2024年02月13日
    浏览(51)
  • 如何正确修改IP地址为手动或自动获取?(只针对局域网ip 静态ip)

      本文主要和广大电脑用户分享 如何正确修改IP地址为手动或自动获取? 有时候电脑连接不上网络,主要原因是需要修改IP地址,这些针对IP地址的修改来做个详细的介绍。(本文所指修改ip地址的方法,只针对局域网ip  静态ip),动态ip是DHCP自动分配的,需要到路由器设置

    2024年02月05日
    浏览(37)
  • 如何能在局域网中隐藏电脑及IP地址(防止被攻击)

    局域网在各大单位中最为常见,所有开机的电脑都会不约而同的出现在单位的局域网上,而且大家都有固定的IP地址,而固定的IP地址很容易被攻击,因此,有没有什么办法可以在局域内隐藏自己的电脑及IP地址呢?答案是肯定的,可以。 隐藏自己的计算机 在windowsXP中右键点击

    2024年02月06日
    浏览(35)
  • 通过python 获取当前局域网内存在的IP和MAC

    通过python 获取当前局域网内存在的ip

    2024年02月10日
    浏览(31)
  • 局域网ip地址不够用肿么办?用这三种方法,可以完美解决

    如果是在一个小型的局域网里可能 完全不必要考虑IP地址不够的情况, 但是在超过“ 255台 ”电脑的大型局域网里,就必须要考虑电脑IP地址不够用该如何解决了。 很多时候企业局域网络出现私网地址192.168.1.x-255不够用了,去掉一个广播地址及一个 网络地址 后就可能不够用

    2024年04月10日
    浏览(39)
  • Linux云计算之使用DHCP为局域网中的机器分配IP地址

    首先为了避免和当前网络环境中DHCP冲突,我们使用虚拟机自定义的网络模式: 使用VMnet2即可 安装DHCP 1.使用yum进行安装。 2.配置文件位置: 主配置文件: 3.DHCP主程序包安装好后会自动生成主配置文件的范本文件。 将范本配置文件复制到/etc 目录下替换掉空白dhcpd.conf 主配置

    2023年04月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包