Я хочу определить IP моего Raspberry Pi, который подключен к моему ПК через Ethernet и имеет динамический IP.
2 ответа
Опция 1:
Посмотрите на свой DHCP-сервер. Если он отображает все аренды DHCP, вы можете увидеть его там.
Вариант 2:
Или попробуйте найти его в таблице ARP, если вы знаете MAC-адрес вашего Raspberry PI. Откройте для этого командную строку и введите arp -a
. Затем он показывает вам список всех известных пар IP-MAC. Если его там нет, попробуйте проверить свой широковещательный адрес и снова введите arp -a
. Широковещательный IP-адрес всегда является последним IP-адресом в вашей подсети. Например, широковещательный IP-адрес подсети 192.168.0.0
- 192.168.0.255
.
Вариант 3:
Вы также можете сканировать все устройства в вашей сети на наличие открытого порта, если вы знаете определенный порт, который открыт только на вашем Raspberry Pi. Скажем, ваш Raspberry Pi открыт на порт 80, вы можете сканировать все IP-адреса в вашей подсети на порт 80. Если в вашей сети слишком мало веб-серверов (может быть, только несколько принтеров и маршрутизаторов, для которых вы, конечно, знаете 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
. Вы можете просто передать один аргумент для Computername и Port или передать несколько значений через запятую.
Чтобы просканировать всю подсеть на порт 80, вы должны сделать это следующим образом (при условии, что вы используете подсеть 192.168.0.0/24):
$ips = 1..254 | Foreach-Object { "192.168.0.$_" } ; Test-Port $ips 80
Дайте мне знать, если вам нужна дополнительная информация или просто укажите порт, который вы хотите сканировать, я создам вашу команду для вас.
Если вы знаете имя хоста RasPi, вы можете просто пропинговать его. Если он ответит на запрос, он скажет вам, что это IP-адрес.
Сценарий не требуется.