네트워크에서 호스트를 검색하는 데 사용되는 스크립트 또는 프로그램

네트워크에서 호스트를 검색하는 데 사용되는 스크립트 또는 프로그램

설명하다:

네트워크에서 장치를 검색하려면 스크립트나 프로그램이 필요합니다. 스캔을 할 수 있을 거라 생각 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의 예입니다. 코드는 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

관련 정보