Script ou Programa para descobrir hosts na rede

3

Explicação:

Eu preciso de um script ou programa para descobrir dispositivos na minha rede. Eu estava pensando em talvez fazer a varredura com nmap e eu preciso mostrar apenas o nome do dispositivo, o que é, e também o endereço IP / endereço MAC do dispositivo também. Eu gostaria de fazer a varredura em segundo plano e exibir apenas as informações desejadas na forma de uma lista, eu acho.

Exemplo:

depois da execução do script / programa:

- Existem 2 hosts

  • Host 1: Lenovo-PC | 192.168.1.86 | 0A: 65: 3F: 2B: F1 | Windows
  • Host 2: LG-3444 | 192.168.1.89 | A9: B2: C3: D4: E5 | LG Electronics

ect ... você começa o ponto.

PS: BTW, estes são exemplos não reais do IP.

Visão geral

Portanto, quero verificar minha rede em busca de dispositivos / hosts e exibir informações importantes sobre cada um deles em uma lista (usando o script bash, python ou qualquer coisa que possa conseguir isso).

    
por iamr00t 10.07.2017 / 20:41

1 resposta

0

Este é um exemplo em perl. O código executa nmap com o formato de saída XML e, em seguida, analisa a saída usando a biblioteca Nmap :: Parser. Você precisa fornecer máscara de rede como um argumento. Então, se você salvar este skript no arquivo explore.pl , você pode executá-lo como

explore.pl 192.168.1.0/24

Você precisa executar esse script como root se quiser exibir endereços 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";
}
    
por 16.07.2017 / 15:45