Guest MartinBefehl NMap auf der Bash ausführen
my $output = `nmap parameter`;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
# @data enthält alle im Regex gefangenen Muster, das sind Hostname, IP, Status my @data = ( $output =~ /report for (.+?) \((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\)\nHost is (\w+)/gm ); # solange noch Daten im Array sind while (scalar @data) { # hole den Hostname aus dem Array und zerlege in die verschiedenen Teile my @parts = split /\./,shift @data; # Domain ist hier XXXXX.TLD, aus letzten beiden Teilen erzeugen my $domain = "$parts[-2].$parts[-1]"; # die letzten beiden abgetrennten Infos wegwerfen pop @parts; pop @parts; # Hostname aus dem Rest erzeugen my $host = join '.',@parts; say "Host: ", $host; say "Domain: ", $domain; # IP aus Datenarray holen say "IP: ", shift @data; # Status aus Datenarray holen say "Status: ",shift @data; say '-' x 10; }