설명하다:
네트워크에서 장치를 검색하려면 스크립트나 프로그램이 필요합니다. 스캔을 할 수 있을 거라 생각 nmap
하고 장치 이름, 장치 이름, 장치의 IP 주소/mac 주소만 표시하면 됩니다. 백그라운드에서 스캔하여 필요한 정보만 목록 형식으로 표시하고 싶습니다.
예:
스크립트/프로그램이 실행된 후:
-호스트 2명이 온라인 상태입니다
- 호스트 1:레노버-PC | 192.168.1.86 0A:65:3F:2B:F1 |
- 진행자 2:LG-3444 |192.168.1.89 |A9:B2:C3:D4:E5 |
잠깐만요... 알았어요.
추신: 참고로 이는 실제 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