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

Binary file not shown.

View File

@@ -0,0 +1,21 @@
#!/bin/perl
use lib '/MoVA/';
use strict;
use menu;
my %main;
$main{'a'} = ['Punkt 1', '#function1'];
$main{'z'} = ['Ende', '#quit'];
$main{'desc'} = 'TEST';
show(\%main);
sub function1 {
print "HALLO";
<STDIN>;
show(\%main);
}
sub quit {
exit;
}

View File

@@ -0,0 +1,75 @@
#!/bin/perl
# Key: Shortcut im Menü
# Value: Array aus Menüpunkttext und Aktion
# Aktion kann weiterer Menüpunkt sein, oder Funktion die aufgerufen werden soll
# Für Menüpunkt muss ein Hash mit diesem Namen angelegt werden, der ein weiteres
# Menü beschreibt.
# Für Funktion muss das erste Zeichen eine Raute (#) sein. Eine Funktion mit dem
# entspr. Namen muss angelegt sein.
# Bei jedem Menüpunkt kann eine Beschreibung angegeben werden, dazu ist bei dem entspr.
# Menühash ein Key 'desc' mitanzulegen. Der Value ist ein Skalar der den Menünamen enthält.
# Beispielkonfig mit Aufruf
#$haupt{'1'} = ['Adressen', 'adressen'];
#$haupt{'2'} = ['Sagem', 'sagem'];
#$haupt{'3'} = ['Nokia', 'nokia'];
#$haupt{'e'} = ['Ende', '#bye'];
#$haupt{'desc'} = "Hauptmenü";
#$adressen{'1'} = ['Suchen', '#adr_suchen'];
#$adressen{'z'} = ['Zurück', 'haupt'];
#$adressen{'desc'} = "Adressen";
#$sagem{'z'} = ['Zurück', 'haupt'];
#$sagem{'desc'} = "Sagem";
#$nokia{'z'} = ['Zurück', 'haupt'];
#$nokia{'desc'} = "Nokia";
#menue("haupt");
package menu;
use Exporter;
use Win32::Console::ANSI;
use Term::ANSIScreen qw/:color :cursor :screen/;
@ISA = ('Exporter');
@EXPORT = (@EXPORT,'show');
sub show {
no strict;
($me) = @_;
%menu = %$me;
do {
print "\e[2J";
print "----- $menu{'desc'} -----\n\n";
foreach (sort keys %menu) {
if ($_ eq 'desc') { next; }
print " ";
print Term::ANSIScreen::colored(" $_",'black on white');
print " $menu{$_}->[0]\n\n";
}
print "\nAuswahl:";
$auswahl = <STDIN>;
chomp $auswahl;
$ok=0;
foreach (sort keys %menu) {
if ("$_" eq "$auswahl") {
$ok = 1;
}
}
} while (!$ok);
$para = "$menu{$auswahl}->[1]";
if ($para =~ /#/) {
$para =~ s/#//;#,$para;
$fkt="main::$para";
&$fkt;
}
else {
# show(\{%$para});
}
}
1;

View File

@@ -0,0 +1,79 @@
#!/bin/perl
# Key: Shortcut im Menü
# Value: Array aus Menüpunkttext und Aktion
# Aktion kann weiterer Menüpunkt sein, oder Funktion die aufgerufen werden soll
# Für Menüpunkt muss ein Hash mit diesem Namen angelegt werden, der ein weiteres
# Menü beschreibt.
# Für Funktion muss das erste Zeichen eine Raute (#) sein. Eine Funktion mit dem
# entspr. Namen muss angelegt sein.
# Bei jedem Menüpunkt kann eine Beschreibung angegeben werden, dazu ist bei dem entspr.
# Menühash ein Key 'desc' mitanzulegen. Der Value ist ein Skalar der den Menünamen enthält.
# Beispielkonfig mit Aufruf
#$haupt{'1'} = ['Adressen', 'adressen'];
#$haupt{'2'} = ['Sagem', 'sagem'];
#$haupt{'3'} = ['Nokia', 'nokia'];
#$haupt{'e'} = ['Ende', '#bye'];
#$haupt{'desc'} = "Hauptmenü";
#$adressen{'1'} = ['Suchen', '#adr_suchen'];
#$adressen{'z'} = ['Zurück', 'haupt'];
#$adressen{'desc'} = "Adressen";
#$sagem{'z'} = ['Zurück', 'haupt'];
#$sagem{'desc'} = "Sagem";
#$nokia{'z'} = ['Zurück', 'haupt'];
#$nokia{'desc'} = "Nokia";
#menue(\%haupt);
#use Win32::Console::ANSI;
#use Term::ANSIScreen qw/:color :cursor :screen/;
package menue;
sub zeigen {
($me) = @_;
%menu = %$me;
do {
#print "\e[2J";
my @subst = (['ä','ae'],['ö','oe'],['ü','ue'],['ß','ss'],['Ä','Ae'],['Ö','Oe'],['Ü','Ue']);
foreach (@subst) {
$menu{'desc'} =~ s/$_->[0]/$_->[1]/g;
}
print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n----- $menu{'desc'} -----\n\n";
foreach my $mp (sort keys %menu) {
if ($mp eq 'desc') { next; }
foreach (@subst) {
$menu{$mp}->[0] =~ s/$_->[0]/$_->[1]/g;
}
print " $mp $menu{$mp}->[0]\n\n";
}
print "\nAuswahl:";
$auswahl = <STDIN>;
chomp $auswahl;
$ok=0;
foreach (sort keys %menu) {
if ("$_" eq "$auswahl") {
$ok = 1;
}
}
} while (!$ok);
$para = "$menu{$auswahl}->[1]";
if ($para =~ /#/) {
$para =~ s/#//,$para;
$fkt="main::$para";
&$fkt;
}
else {
menue::zeigen("$para");
}
}
1;

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Komodo Project File - DO NOT EDIT -->
<project id="8D1ED6C9-A2B4-485E-8348-A39DE479B497" name="search" kpf_version="2">
<preference-set id="">
</preference-set>
<file url="menu.pm" id="8E6CD4E3-CA76-4060-A31E-32FE2D27D27E" name="menu.pm">
</file>
<file url="search.pl" id="3F0E9C0D-B326-4455-BCF3-C45D5A588336" name="search.pl">
<preference-set id="">
<string id="lastInvocation">default</string>
<preference-set id="Invocations">
<preference-set id="default">
<string id="postparams"></string>
<string id="userEnvironment"></string>
<string id="warnings">enabled</string>
<boolean id="use-console">0</boolean>
<string id="getparams"></string>
<string id="executable-params"></string>
<boolean id="sim-cgi">0</boolean>
<string id="filename">G:\Dokumentation\Sonstige Perl-Skripte\arpsearch\new\search.pl</string>
<string id="request-method">GET</string>
<long id="debugger.io-port">9011</long>
<string id="params"></string>
<string id="mpostparams"></string>
<string id="posttype">application/x-www-form-urlencoded</string>
<string id="documentRoot"></string>
<string id="cookieparams"></string>
<boolean id="show-dialog">1</boolean>
<string id="cwd"></string>
<string id="userCGIEnvironment"></string>
</preference-set>
</preference-set>
</preference-set>
</file>
</project>

View File

@@ -0,0 +1,161 @@
#!/bin/perl
use menu;
use strict;
my %haupt;
my %konfig;
my %ip_mac_hash;
my %switch_hash;
my $community='con';
$haupt{'1'} = ['IP', '#search_ip'];
$haupt{'2'} = ['MAC', '#search_mac'];
$haupt{'3'} = ['Switch/Port', '#search_switchport'];
$haupt{'a'} = ['ARP Caches lesen','#read_arp'];
$haupt{'m'} = ['MAC Tables lesen','#read_mac'];
$haupt{'x'} = ['Ende', '#bye'];
$haupt{'desc'} = "fucking menu";
show(\%haupt);
sub read_arp {
%ip_mac_hash = ();
create_host_mac_hash('10.1.1.250',\%ip_mac_hash);
create_host_mac_hash('10.3.2.51',\%ip_mac_hash);
create_host_mac_hash('10.3.2.52',\%ip_mac_hash);
create_host_mac_hash('90.200.31.21',\%ip_mac_hash);
create_host_mac_hash('90.200.31.23',\%ip_mac_hash);
show(\%haupt);
}
sub read_mac {
%switch_hash = ();
create_switch_hash("10.1.1.101",\%switch_hash);
create_switch_hash("10.1.1.103",\%switch_hash);
create_switch_hash("10.1.1.104",\%switch_hash);
create_switch_hash("10.1.1.106",\%switch_hash);
create_switch_hash("10.1.1.107",\%switch_hash);
create_switch_hash("10.1.1.112",\%switch_hash);
show(\%haupt);
}
sub search_ip {
my $mac;
my $found=0;
print "IP?";
my $ip = <STDIN>;
chomp $ip;
foreach (keys %ip_mac_hash) {
if ($_ eq $ip) {
$mac = $ip_mac_hash{$ip};
$found=1;
last;
}
}
if ($found==1) {
print "\nGesuchte IP: $ip\nGefundene MAC-Adresse: $mac\n";
foreach my $swip (keys %switch_hash) {
my $count;
foreach my $int (keys %{$switch_hash{$swip}}) {
foreach my $maconsw (@{$switch_hash{$swip}{$int}{'MAC'}}) {
$count++;
print "$count $maconsw $mac\n";
if ($maconsw eq $mac) {
print "Switch: $swip\nPort: $switch_hash{$swip}{$int}{'ifDesc'}\n";
last;
}
}
}
}
}
<STDIN>;
show(\%haupt);
}
sub search_mac {
show(\%haupt);
}
sub search_switchport {
show(\%haupt);
}
sub bye {
exit;
}
sub check_ip {
my ($ip) = @_;
my $ok=0;
my ($i1,$i2,$i3,$i4);
if ( ($i1,$i2,$i3,$i4) = $ip =~ /^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)$/ ) {
$ok=1 if ($i1 < 255 and $i2 < 255 and $i3 < 255 and $i4 < 255);
}
return $ok;
}
sub check_mac {
my ($mac) = @_;
my $ok=0;
$ok=1 if ( $mac =~ /^[0-9a-f]{2}\.[0-9a-f]{2}\.[0-9a-f]{2}\.[0-9a-f]{2}\.[0-9a-f]{2}\.[0-9a-f]{2}$/i );
return $ok;
}
sub check_switch_port {
my ($switchport)=@_;
my $ok=0;
my ($ip,$port) = split /\//,$switchport;
$ok=1 if (check_ip($ip) and check_port($port));
return $ok;
}
sub check_port {
my ($port)=@_;
my $ok=0;
$ok=1 if ($port =~ /^[0-9]{1,2}$/ or $port =~ /^[a-z]{1}[0-9]{1}$/i);
return $ok;
}
sub create_host_mac_hash {
my ($switchip,$hashref)=@_;
my @array;
@array = `snmpwalk -mall -c $community $switchip .1.3.6.1.2.1.4.22.1.2`;
foreach (@array) {
chomp;
my ($ip,$mac) = $_ =~ /([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*) = Hex: ([0-9a-f ]*) $/i;
$mac =~ s/ /./g;
$$hashref{"$ip"}="$mac";
}
print "";
}
sub create_switch_hash {
my ($switchip,$hashref)=@_;
my @array;
@array = `snmpwalk -mall -c $community $switchip .1.3.6.1.2.1.17.4.3.1.1`; # MAC-Adr auf Switch ermitteln
foreach (@array) {
chomp;
my ($m1,$m2,$m3,$m4,$m5,$m6) = $_ =~ /= Hex: ([0-9a-f]{2}) ([0-9a-f]{2}) ([0-9a-f]{2}) ([0-9a-f]{2}) ([0-9a-f]{2}) ([0-9a-f]{2})/i;
my $mac="$m1."."$m2."."$m3."."$m4."."$m5."."$m6"; # MACs nach Dezimal umwandeln
my $d1 = hex($m1);
my $d2 = hex($m2);
my $d3 = hex($m3);
my $d4 = hex($m4);
my $d5 = hex($m5);
my $d6 = hex($m6);
my $oid=".1.3.6.1.2.1.17.4.3.1.2.$d1.$d2.$d3.$d4.$d5.$d6";
my $line=`snmpwalk -mall -c $community $switchip $oid`; # Interface auf dem MAC liegt suchen
chomp $line;
my ($interface) = $line =~ / = ([0-9]{2})$/;
# print "$interface\n";
push @{$$hashref{$switchip}{$interface}{'MAC'}},$mac unless ($interface eq "");
}
foreach my $ip (keys %$hashref) {
foreach my $intid (keys %{$$hashref{$ip}}) {
# .1.3.6.1.2.1.2.2.1.2 => ifDescr; dazu noch .$intid anhängen
# .1.3.6.1.2.1.2.2.1.4 => ifMTU; dazu noch .$intid anhängen
# ...
my $oid = ".1.3.6.1.2.1.2.2.1.2." . $intid;
my $line=`snmpwalk -mall -c $community $switchip $oid`;
my ($portname) = $line =~ /"([a-z0-9]{1,2})"/i;
$$hashref{$switchip}{$intid}{'ifDesc'} = $portname;
# print "$$hashref{$switchip}{$intid}{'ifDesc'}\n";
}
}
}
1;

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,12 @@
#!/bin/perl
my %konfig=(v1 => k1, v2 => k2);
my $para = 'konfig';
print %{$para};
print "\n\n";
print %konfig;
print "";

View File

@@ -0,0 +1,5 @@
65
65
65