我想确定我的 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.0
是192.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.1
和AnyComputerName
以查找开放端口80
和443
。您可以简单地为计算机名和端口传递一个参数,也可以传递多个以逗号分隔的值。
要扫描整个子网中的端口 80,请按如下方式操作(假设您使用子网 192.168.0.0/24):
$ips = 1..254 | Foreach-Object { "192.168.0.$_" } ; Test-Port $ips 80
如果您需要更多信息或只是告诉我您想要扫描的端口,请告诉我,然后我会为您创建命令。
答案2
如果您知道 RasPi 主机名,您可以 ping 它。如果它响应 ping,它会告诉您它的 IP 地址。
无需脚本。