This commit is contained in:
2024-10-14 00:08:40 +02:00
parent dbfba56f66
commit 1462d52e13
4572 changed files with 2658864 additions and 0 deletions

View File

@@ -0,0 +1,112 @@
#! /bin/perl
# Läuft nur unter Windows richtig
# HP9304
#.1 .3 .6 .1 .2 .1 .4 .22 .1 .1
#iso org dod internet mgmt mib-2 ip ipnettomediatable ipnettomediaentry ipnettomediaifindex
# .2
use Win32::Console::ANSI;
use Term::ANSIScreen qw/:color :cursor :screen/;
use Net::Nslookup;
use strict;
while (1) {
my @switches=();
my @routers=();
my @cutoffs=();
##### Gesuchte IP entgegennehmen
print "\e[2JGesuchte Switch-Port eingeben, <ENTER> beendet: ";
my $input=<STDIN>;
chomp $input;
my $swip;
my $swport;
($swip,$swport) = split /-/,$input;
if ($input eq "") { exit; }
##### Gesuchte IP anpingen um auf jeden Fall einen ARP Eintrag zu erhalten
`ping -n 3 -w 1000 $swip`;
##### Konfig der Switches lesen
open SWITCHES, "<switches.conf";
while (<SWITCHES>) {
chomp;
next unless ($_ =~ /^[0-9]/);
@switches=(@switches, $_);
}
close SWITCHES;
##### Konfig der Router lesen
open ROUTERS, "<routers.conf";
while (<ROUTERS>) {
chomp;
next unless ($_ =~ /^[0-9]/);
@routers=(@routers, $_);
}
close ROUTERS;
##### Router durchsuchen um MAC zu IP zu finden
my @array;
##### Router einzeln durchlaufen
foreach my $router (@routers) {
my @onerouter;
##### ARP Einträge eines Routers lesen
@onerouter = `snmpwalk -mall -c public $router .1.3.6.1.2.1.4.22.1.2`;
##### Alle ARP Einträge zusammenfassen
@array = (@array, @onerouter);
}
my $ergebnis="";
my $intind="";
my $intname="";
my $mac="";
my $gesmac="";
my ($m1,$m2,$m3,$m4,$m5,$m6);
$m1=$m2=$m3=$m4=$m5=$m6=0;
print "\n";
savepos();
print "Durchsuche Switch $swip";
my @ergebnis = `snmpwalk -mall -c public "$swip" ".1.3.6.1.2.1.2.2.1.2"`; # interface namen
foreach (@ergebnis) {
my $port;
my $oid="";
my @ifindex;
($oid,$port) = split / = /,$_;
if ($port =~ /"$swport"/) {
@ifindex = split /\./,$oid;
my $macstring= `snmpwalk -mall -c public "$swip" ".1.3.6.1.2.1.2.2.1.6.$ifindex[-1]"`; # Suche MAC an Port ## falsche oid, gibt mac des switchports zurück
# print $ifindex[-1];
# print "$macstring\n";
my $mac;
(undef,$mac) = split /:/,$macstring;
chomp $mac;
print "\nMAC:$mac\n\n";
foreach my $arpipstring (@array) {
chomp $arpipstring;
my $arpmac;
(undef,$arpmac) = split /:/,$arpipstring;
#print "'$arpmac' : '$mac'\n";
if ($arpmac eq $mac) {
print "\n$arpmac\n$mac\n";
print "$arpipstring\n";
}
}
}
}
print "<Enter> für weiter!";
<STDIN>;
}