Сценарий или программа для обнаружения хостов в сети

Вы не нужна явная логика If / Else:

awk '$NF ~ /[0-9]/ {print $NF; next}; {print $(NF-1)}'
3
10.07.2017, 23:39
1 ответ

Это пример на perl. Код запускается nmapс выходным форматом XML, а затем анализируется с помощью библиотеки Nmap ::Parser. Вам необходимо указать сетевую маску в качестве аргумента. Поэтому, если вы сохраните этот скрипт в файл explore.pl, вы сможете запустить его как

explore.pl 192.168.1.0/24

Вам нужно запустить этот скрипт как root, если вы хотите отображать 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";
}
0
27.01.2020, 21:35

Теги

Похожие вопросы