web-dev-qa-db-ja.com

Windows 7で、イーサネット経由で接続されたデバイス(Raspberry Pi)のIPを見つけるにはどうすればよいですか?

イーサネット経由でPCに接続され、動的IPを持つRaspberryPiのIPを確認したいと思います。

1
gbhall

オプション1:
DHCPサーバーを調べます。すべてのDHCPリースが表示されている場合は、そこに表示されます。

オプション2:
または、Raspberry PiのMACアドレスがわかっている場合は、arpテーブルで検索してみてください。そのためのcmdプロンプトを開き、arp -aと入力します。次に、既知のすべてのIP-MACペアのリストが表示されます。そこにない場合は、ブロードキャストアドレスにpingを実行して、もう一度arp -aを入力してみてください。ブロードキャストIPは、常にサブネット内の最後のIPです。たとえば、サブネット192.168.0.0のブロードキャストIPは192.168.0.255です。

オプション3:
Raspberry Piでのみ開いている特定のポートがわかっている場合は、ネットワーク内のすべてのデバイスをスキャンして、開いているポートを探すこともできます。たとえば、Raspberry Piがポート80で開いている場合、サブネット内のすべてのIPアドレスをスキャンしてポート80を探すことができます。ネットワークにWebサーバーが多すぎない場合(IPを知っているプリンターとルーターが数台しかない場合)もちろんアドレス)、あなたはあなたのラズベリーパイを非常に速く見つけるでしょう。
残念ながら、Powershellスクリプトを使用してポートをスキャンしているため、nmapの使用方法がわかりません。試してみたい場合は、ここに貼り付けることができます。私のスクリプトを試してみたい場合は、コメントでお知らせください。

編集:これが私のスクリプトです。以下の使用法。

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に1つの引数を渡すか、複数のコンマ区切り値を渡すことができます。

サブネット全体でポート80をスキャンするには、次のようにします(サブネット192.168.0.0/24を使用していると仮定します)。
$ips = 1..254 | Foreach-Object { "192.168.0.$_" } ; Test-Port $ips 80

さらに情報が必要な場合、またはスキャンしたいポートを教えてください。コマンドを作成します。

3
wullxz

RasPiホスト名がわかっている場合は、pingを実行するだけです。 pingに応答すると、IPアドレスが通知されます。

スクリプトは必要ありません。

0
doni49