【问题标题】:Find IP of raspberry pi by scanning IPs with Python通过使用 Python 扫描 IP 来查找树莓派的 IP
【发布时间】:2017-11-20 16:18:13
【问题描述】:

我使用 Raspberry Pi,它从我们公司网络中的 DHCP 主机获取其 IP 地址。我想在不连接显示器的情况下找出它的 IP 地址。

例如,很明显如何使用 Python 扫描一系列可能的 IP,但是如何检查线路的另一端是否有 Raspberry Pi?

这是我迄今为止尝试过的(设备上应该有一个开放的 ssh 端口),但我还没有找到 Raspberry Pi。现在我不确定我的 Raspi 是否没有正确连接或者我的方法根本不起作用:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

for i in range(1,256):
    ip = '192.168.132.{}'.format(i)
    try:
        s.connect((ip, 22))
        print('Raspi is probably on {}'.format(ip))
    except socket.error as e:
        print('Nothing on {}.'.format(ip))
    s.close()

【问题讨论】:

    标签: python networking raspberry-pi


    【解决方案1】:

    您的代码正在寻找任何打开 ssh 端口 22 的设备。所以你可能会得到误报。另外,如果 Pi 没有默认打开 22 端口,那么您将无法获得匹配。

    您可以使用诸如 nmap (nmap.org) 之类的(非 Python)实用程序来进行端口扫描,它可以进行“操作系统指纹识别”。

    另外,如果你和树莓派在同一个网络上,那么你应该在你的 arp 表中获取它的 MAC 地址。树莓派 MAC 地址应以“B8-27-EB”开头。

    https://nmap.org/

    https://raspberrypi.stackexchange.com/questions/28365/what-are-the-possible-ouis-for-the-ethernet-mac-address

    https://www.raspberrypi-spy.co.uk/2012/06/finding-the-mac-address-of-a-raspberry-pi/

    【讨论】:

    • 如果我发现至少有一些误报,我会很高兴,但我根本没有找到任何设备。不过,nmap 完成了这项工作,感谢您的提示。
    【解决方案2】:

    以下代码返回一个包含不同连接 IP 的字典。它适用于 Raspberry 和 Windows 10,并且可能适用于所有操作系统。 我将它用于 Raspi 上的套接字服务器。在 Windows 中,我只使用主机名。

    info = dict()
    conns = psutil.net_if_stats()
    ifs = psutil.net_if_addrs()
    for conn, snicstats in conns.items():
        if snicstats.isup:
            connifs = ifs[conn]
            for connif in connifs:
                if str(connif.family.name) == 'AF_INET':
                    info[conn[:17]] = connif.address
    

    Raspberry 上的示例输出:

    {'lo': '127.0.0.1', 'wlan0': '192.168.0.101'}

    【讨论】:

      猜你喜欢
      • 2022-12-21
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2019-01-08
      • 2016-11-11
      • 2017-10-29
      • 1970-01-01
      • 2013-07-21
      相关资源
      最近更新 更多