#! usr/bin/perl -w use GraphViz; use SNMP_util "0.90"; use subroutine; use Data::Dumper; #use strict; #$path = "/media/hda5/nemo/"; open (DATEI,">d:/mac/mac_tabel.txt"); close DATEI; open(DATEI,">d:/mac/tree.txt"); close DATEI; my @ip = qw(10.17.5.201 10.16.5.201 10.37.4.201 10.46.10.201 10.17.3.201 10.18.5.201); my @mac_address_liste = qw(00-11-0A-4E-81-00 00-11-85-35-66-00 00-11-85-5A-A5-00 00-11-85-2F-51-00 00-0E-7F-C1-62-80 00-11-85-2E-6D-80); my $ipaddress; my @port_address_table; my @mac_tabel_filter; my @mac_tabel_result; my %y; foreach $ipaddress (@ip){ my $host = ("rmon12\@$ipaddress"); my @snmp_result_port_mac = &snmpwalk($host, ("1.3.6.1.2.1.2.2.1.6")); %y = port_analyse(@snmp_result_port_mac); my @mac_address_port = convert_mac_address(@snmp_result_port_mac); open(DATEI,">d:/mac/test.txt") ; print DATEI "$ipaddress "; print DATEI @mac_address_port; close DATEI; foreach my $port_mac (@mac_address_port){ push (@port_address_table, $port_mac); } open (DATEI,">>d:/mac/mac_tabel.txt"); print DATEI "$ipaddress "; print DATEI "------------- "; close DATEI; my @snmp_result = &snmpwalk($host, ("1.3.6.1.2.1.17.4.3.1.1")); my @mac_address_result = convert_mac_address(@snmp_result); foreach my $port_address_table (@port_address_table) { foreach my $mac_address (@mac_address_result) { if ($mac_address eq $port_address_table){ if ($mac_address =~/[a-fA-F1-9]$/){ open(DATEI,">>d:/mac_tabel.txt") ; print DATEI "$mac_address "; close DATEI; push (@mac_tabel_result, $mac_address); $mac_ip{$mac_address} = $ipaddress; } } } } } foreach my $ipaddress (@ip){ my $host = ("rmon12\@$ipaddress"); my @snmp_result_port_mac = &snmpwalk($host, ("1.3.6.1.2.1.2.2.1.6")); my @mac_address_port = convert_mac_address(@snmp_result_port_mac); foreach my $mac_port_address (@mac_address_port) { foreach my $mac_address_2 (@mac_tabel_result) { if ($mac_address_2 eq $mac_port_address){ open(DATEI,">>d:/mac/tree.txt") ; print DATEI "An Switch $ipaddress ist Switch:"; print DATEI "$mac_ip{$mac_address_2} angeschlossen "; close DATEI; #$graph = $graph.$mac_ip{$mac_address_2}; push @{$graph{$ipaddress}},$mac_ip{$mac_address_2}; } } } #$graph{$ipaddress} = $graph; #print "$graph "; } print Dumper(\%graph); my $g = GraphViz->new(); for my $k (keys %$graph) { $g -> add_edge($k=>$_) for @{$graph->{$k}}; } print $g->as_png('graph.png'); #Textdatein zum verlgeich open(DATEI,">d:/mac/mac_port_address_variable.txt") ; print DATEI "$ipaddress "; print DATEI @mac_address_port; close DATEI; open(DATEI,">>d:/mac/mac_address_2_variable.txt") ; print DATEI "$ipaddress "; print DATEI @mac_address_result; print DATEI @mac_tabel_result; close DATEI; open(DATEI,">d:/mac/mac_ip_hash.txt") ; print DATEI %mac_ip; close DATEI; #print "--------------"; #print %y; open(DATEI,">d:/mac/mac_port_hash.txt") ; print DATEI %y; close DATEI;