在 Windows 7 中,如何找到通过以太网连接的设备(Raspberry Pi)的 IP?

在 Windows 7 中,如何找到通过以太网连接的设备(Raspberry Pi)的 IP?

我想确定我的 Raspberry Pi 的 IP,它通过以太网连接到我的电脑并且具有动态 IP。

答案1

选项1:
查看您的 DHCP 服务器。如果它显示所有 DHCP 租约,您可以在那里看到它。

选项 2:
或者,如果您知道 Raspberry PI 的 MAC 地址,请尝试在 arp 表中找到它。为此打开 cmd 提示符并输入arp -a。然后它会显示所有已知 IP-MAC 对的列表。如果它不在那里,请尝试 ping 您的广播地址并arp -a再次输入。广播 IP 始终是子网中的最后一个 IP。例如,子网的广播 IP192.168.0.0192.168.0.255

选项 3:
如果您知道仅在 Raspberry Pi 上开放的特定端口,您还可以扫描网络中的所有设备以查找开放端口。假设您的 Raspberry Pi 在端口 80 上开放,您可以扫描子网中的所有 IP 地址以查找端口 80。如果您的网络中没有太多 Web 服务器(可能只有几台打印机和路由器,当然您知道它们的 IP 地址),您将很快找到您的 Raspberry Pi。
遗憾的是,我不知道如何使用 nmap,因为我使用 Powershell 脚本来扫描端口。如果您想尝试,我可以将其粘贴在这里。如果您想尝试我的脚本,只需在评论中告诉我。

编辑: 这是我的脚本。用法如下。

function Test-Port {

param(
        [parameter(Position=0)][string[]]$Computer=(Read-Host "Target: "),
        [parameter(Position=1)][string[]]$Port=(Read-Host "Ziel-Port: "),
        [int]$Timeout=1000
)

$ErrorActionPreference = "SilentlyContinue"
$ResultObjects = @()

foreach ($Target in $Computer) {
    foreach ($p in $Port) {
        $ResultObjects += P_Test-Port
    } # end port foreach
} #end target foreach

return $ResultObjects
} #end function

function P_Test-Port {

        $tcpclient = new-object system.net.sockets.tcpclient
        $con = $tcpclient.BeginConnect($Target,$p,$null,$null)
        $wait = $con.AsyncWaitHandle.WaitOne($timeout,$false)
        [bool]$Open = $false

        # check the connection
        if(!$wait)
        {
            # close connection and report timeout
            $tcpclient.Close()
            [string]$result = ("Connection Timeout (" + $Timeout + " ms)")
            $failed = $true
        } else {
            $error.Clear()
            $tcpclient.EndConnect($con) | out-null
            if(!$?){[string]$result = ("Closed / Filtered");$failed = $true}
            $tcpclient.Close()
        }
        if(!$failed){
            [string]$result = ("Open")
            $failed = $false
            $Open = $true
        } 



        $objTestPortResult = new-object System.Object
        $objTestPortResult | Add-Member -type NoteProperty -name Host -value $Target
        $objTestPortResult | Add-Member -type NoteProperty -name Port -value $p
        $objTestPortResult | Add-Member -type NoteProperty -name Result -value $result
        $objTestPortResult | Add-Member -type NoteProperty -name Open -value $Open

        return $objTestPortResult
}

复制此脚本并将其粘贴到您的 powershell 中。然后您可以按如下方式使用它:
Test-Port <IP-Address[]> <Port[]>

示例:Test-Port 192.168.0.1,AnyComputerName 80,443
这将扫描计算机192.168.0.1AnyComputerName以查找开放端口80443。您可以简单地为计算机名和端口传递一个参数,也可以传递多个以逗号分隔的值。

要扫描整个子网中的端口 80,请按如下方式操作(假设您使用子网 192.168.0.0/24):
$ips = 1..254 | Foreach-Object { "192.168.0.$_" } ; Test-Port $ips 80

如果您需要更多信息或只是告诉我您想要扫描的端口,请告诉我,然后我会为您创建命令。

答案2

如果您知道 RasPi 主机名,您可以 ping 它。如果它响应 ping,它会告诉您它的 IP 地址。

无需脚本。

相关内容