説明する:
ネットワークからデバイスを検索するには、スクリプトまたはプログラムが必要です。スキャンできると思うので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の例です。コードはnmap
XML出力形式で実行され、出力は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