ネットワーク上のホストを検索するために使用されるスクリプトまたはプログラム

ネットワーク上のホストを検索するために使用されるスクリプトまたはプログラム

説明する:

ネットワークからデバイスを検索するには、スクリプトまたはプログラムが必要です。スキャンできると思うのでnmap、デバイス名、デバイス名、デバイスのIPアドレス/ macアドレスだけを表示してください。バックグラウンドでスキャンし、必要な情報だけをリスト形式で表示したいと思います。

例:

スクリプト/プログラムが実行された後:

-2人のホストがオンラインです

  • ホスト1:Lenovo-PC | 192.168.1.86 0A:65:3F:2B:F1 |
  • 進行役2:LG-3444 |192.168.1.89 |A9:B2:C3:D4:E5 |

ちょっと待って…わかりました。

PS:参考までに、これは実際のIPではなく例です。

概要

そのため、ネットワーク上のデバイス/ホストを検索し、リスト内の各デバイス/ホストに関する重要な情報を表示しようとしています(bashスクリプト、Python、またはこれを達成できるものを使用して)。

答え1

以下はPerlの例です。コードはnmapXML出力形式で実行され、出力はNmap :: Parserライブラリを使用して解析されます。ネットマスクをパラメータとして提供する必要があります。したがって、このスクリプトをexplore.plファイルに保存すると、次のように実行できます。

explore.pl 192.168.1.0/24

このスクリプトを実行する必要があります。MACアドレスを表示するにはルート

#!/usr/bin/env perl
use utf8;
use strict;
use warnings;
use Nmap::Parser;

sub safeGet($){
  defined $_[0] ? $_[0] : "unknown";
}

my $nmOutput=`/usr/bin/nmap -oX - -A @ARGV`;

my $np = new Nmap::Parser;
$np->parse($nmOutput);

my $cnt=0;
for my $host ($np->all_hosts()){
  $cnt++;

  my $hostName = 'unknown';
  if(@{$host->{hostnames}} > 0){ # $host->hostname returns "0" when no hostname was found.
    $hostName = $host->hostname;
  }
  print "Host $cnt: $hostName|"
    . safeGet($host->addr) ."|"
    . safeGet($host->mac_addr)."|"
    . safeGet($host->os_sig->name)."\n";
}

答え2

これはどうですか:

nmap -sn 10.0.1.0/24 | grep report | cut -f5,6 -d' ' | \
    while read line
    do
        echo -n "$line "
        arp -an $(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') | cut -f4 -d' '
    done

関連情報