ネットワーク上の無料のIPをスキャンする方法はありますか?私が使う nmap -sP 192.168.1.0/24
しかし、これは実際には稼働中のホストを示しています。
このようにNmapを使用することは、いくつかの前提条件が満たされていることを条件として、あなたが質問したことを実行するかなり正確な方法です。
「利用可能な」アドレスを取得するには、Nmapが「ダウン」として報告するアドレスのリストを取得する必要があります。これは、単純なawkコマンドで実行できます。
Sudo nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'
Nmap使用されるオプションの要約:
-v
オプションを使用すると、Nmapは、「アップ」のアドレスに加えて、「ダウン」として検出したアドレスを出力します。-sP
の代わりに、新しいスペル-sn
を使用しましたが、これは同じスキャンを実行しますが、誤解を招く「Pingスキャン」ではなく「ポートスキャンをスキップする」ことを意味します(ホスト検出フェーズ以降) ICMPエコースキャンまたはPingを意味するわけではありません)。-n
オプションは、名前ではなくIPアドレスのみに関心があるため、逆DNSルックアップをスキップします。これにより、少し時間がかかります。-oG
オプションは、Nmapを出力するように指示します grepable 形式です。これは、awkが処理しやすい形式です。引数 "-
"は、この出力をstdoutに送信します。次に、awkコマンドは「Status:Down」を検索し、IPアドレスを含む2番目のフィールドを出力します。
もちろん、スイッチの実行構成またはDHCPサーバーのリースにアクセスできる場合は、セキュリティアラームを発する可能性のあるスキャンを行わなくても、この回答をより信頼できるものにすることができます。
N-mapについては不明ですが、各アドレスに1つのpingを送信するpingスクリプトを作成した場合、「destination unreachable」で戻ってきたホストはすべて占有されておらず、「request time out」で戻ってきたものはすべて空いていると合理的に想定できます。は占有されていますが、pingに応答していません。 2つの応答の違いは、「destination unreachable」がARP要求に対する応答を受信しなかったことです。 「リクエストタイムアウト」は、何かがARPリクエストに応答したが、ICMPパケットには応答しなかったことを意味します。
これがアンダース・ラーソンに触発された別のものです
172.18.5。{129..254}のIPの場合。 do {ping -c 1 -W 1 $ ip; }&>/dev/null || echo $ ip&done |ソート
つまり、「範囲内のすべてのIPに対してpingを実行します。「ping」が失敗した場合は、そのIPを印刷します」
もし、するなら
nmap -v -sn -n 192.168.1.0/24 -oG - | awk '/Status: Down/{print $2}'
高速に動作しますが、「ダウン」と報告されている一部のホストが実際には「アップ」であることに気付きました
これはPowerShellでも同じです...
((nmap -v -sn -n 10.208.2.0/24 -oG - ) -match "Status\:\sDown") | foreach {($_).Split(" ")[1]}