Compare commits
10 Commits
159ab659cb
...
db3a764d49
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db3a764d49 | ||
|
|
62c7719186 | ||
|
|
daee793df6 | ||
|
|
36e8f9be61 | ||
|
|
91ce23ce4a | ||
|
|
535379b3a1 | ||
|
|
b9313c2ec0 | ||
|
|
a46f27792b | ||
|
|
43ca61299e | ||
|
|
a3f0109f06 |
@@ -25,7 +25,7 @@ our
|
||||
($VERSION, %FUNCS, %GLOBALS, %MIBS, %MUNGE, $AUTOLOAD, $INIT, $DEBUG, %SPEED_MAP,
|
||||
$NOSUCH, $BIGINT, $REPEATERS);
|
||||
|
||||
$VERSION = '3.70-135-20.5.6';
|
||||
$VERSION = '3.70-135-20.5.7';
|
||||
|
||||
=head1 NAME
|
||||
|
||||
@@ -1681,6 +1681,7 @@ sub device_type {
|
||||
890 => 'SNMP::Info::Layer2::Zyxel',
|
||||
1286 => 'SNMP::Info::Layer2::ECI',
|
||||
1588 => 'SNMP::Info::Layer3::Foundry',
|
||||
1795 => 'SNMP::Info::Layer2::Paradyne',
|
||||
1872 => 'SNMP::Info::Layer3::AlteonAD',
|
||||
1890 => 'SNMP::Info::Layer3::Redlion',
|
||||
1916 => 'SNMP::Info::Layer3::Extreme',
|
||||
@@ -1729,7 +1730,7 @@ sub device_type {
|
||||
27514 => 'SNMP::Info::Layer3::Qtech',
|
||||
30065 => 'SNMP::Info::Layer3::Arista',
|
||||
30803 => 'SNMP::Info::Layer3::VyOS',
|
||||
32761 => 'SNMP::Info::Layer3::Rotek',
|
||||
32761 => 'SNMP::Info::Layer3::Deliberant',
|
||||
34300 => 'SNMP::Info::Layer3::Eltex',
|
||||
35098 => 'SNMP::Info::Layer3::Pica8',
|
||||
35265 => 'SNMP::Info::Layer3::Eltex',
|
||||
@@ -1737,7 +1738,8 @@ sub device_type {
|
||||
40418 => 'SNMP::Info::Layer3::Nag',
|
||||
41112 => 'SNMP::Info::Layer2::Ubiquiti',
|
||||
44641 => 'SNMP::Info::Layer3::VyOS',
|
||||
41752 => 'SNMP::Info::Layer3::Raisecom',
|
||||
41752 => 'SNMP::Info::Layer3::Rotek',
|
||||
42926 => 'SNMP::Info::Layer2::NSC',
|
||||
);
|
||||
|
||||
my %l2sysoidmap = (
|
||||
@@ -1756,6 +1758,7 @@ sub device_type {
|
||||
776 => 'SNMP::Info::Layer2::Telindus',
|
||||
890 => 'SNMP::Info::Layer2::Zyxel',
|
||||
1286 => 'SNMP::Info::Layer2::ECI',
|
||||
1795 => 'SNMP::Info::Layer2::Paradyne',
|
||||
1872 => 'SNMP::Info::Layer3::AlteonAD',
|
||||
1890 => 'SNMP::Info::Layer3::Redlion',
|
||||
1916 => 'SNMP::Info::Layer3::Extreme',
|
||||
@@ -1785,11 +1788,12 @@ sub device_type {
|
||||
26543 => 'SNMP::Info::Layer3::IBMGbTor',
|
||||
26928 => 'SNMP::Info::Layer2::Aerohive',
|
||||
27514 => 'SNMP::Info::Layer3::Qtech',
|
||||
32761 => 'SNMP::Info::Layer3::Rotek',
|
||||
32761 => 'SNMP::Info::Layer3::Deliberant',
|
||||
34300 => 'SNMP::Info::Layer3::Eltex',
|
||||
35265 => 'SNMP::Info::Layer3::Eltex',
|
||||
40418 => 'SNMP::Info::Layer3::Nag',
|
||||
41752 => 'SNMP::Info::Layer3::Raisecom',
|
||||
41752 => 'SNMP::Info::Layer3::Rotek',
|
||||
42926 => 'SNMP::Info::Layer2::NSC',
|
||||
);
|
||||
|
||||
my %l1sysoidmap = (
|
||||
@@ -1805,6 +1809,7 @@ sub device_type {
|
||||
12532 => 'SNMP::Info::Layer7::Neoteris',
|
||||
14525 => 'SNMP::Info::Layer2::Trapeze',
|
||||
26866 => 'SNMP::Info::Layer7::Gigamon',
|
||||
41752 => 'SNMP::Info::Layer3::Rotek', #Rotek and Raisecom fucking crap -(
|
||||
);
|
||||
|
||||
# Get just the enterprise number for generic mapping
|
||||
|
||||
144
lib/SNMP/Info/Layer2/NSC.pm
Executable file
144
lib/SNMP/Info/Layer2/NSC.pm
Executable file
@@ -0,0 +1,144 @@
|
||||
# SNMP::Info::Layer2::NSC - SNMP Interface to NSC Devices
|
||||
#
|
||||
# Copyright (c) 2020 by 135.
|
||||
|
||||
package SNMP::Info::Layer2::NSC;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Exporter;
|
||||
use SNMP::Info::Layer2;
|
||||
|
||||
@SNMP::Info::Layer2::NSC::ISA = qw/SNMP::Info::Layer2 Exporter/;
|
||||
@SNMP::Info::Layer2::NSC::EXPORT_OK = qw//;
|
||||
|
||||
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
|
||||
|
||||
$VERSION = '3.70-135';
|
||||
|
||||
%MIBS = ( %SNMP::Info::Layer2::MIBS, );
|
||||
|
||||
%GLOBALS = (
|
||||
%SNMP::Info::Layer2::GLOBALS,
|
||||
'model_oid' => 'enterprises.42926.2.3.1.3.0',
|
||||
'serial_oid' => 'enterprises.42926.2.3.1.8.0',
|
||||
'hw_oid' => 'enterprises.42926.2.3.1.1.0',
|
||||
'os_ver_oid' => 'enterprises.42926.2.3.1.2.0',
|
||||
);
|
||||
|
||||
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
|
||||
|
||||
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
|
||||
|
||||
sub vendor {
|
||||
return 'nsc';
|
||||
}
|
||||
|
||||
sub os {
|
||||
return 'nsc-os';
|
||||
}
|
||||
|
||||
sub os_ver {
|
||||
my $obj = shift;
|
||||
my $os_ver = $obj->os_ver_oid || undef;
|
||||
|
||||
return $os_ver
|
||||
if defined $os_ver;
|
||||
return 'unknown';
|
||||
}
|
||||
sub model {
|
||||
my $obj = shift;
|
||||
my $model = $obj->model_oid || undef;
|
||||
my $hwver = $obj->hwver || undef;
|
||||
|
||||
return $model . ' HW:' . $hwver
|
||||
if defined $model and defined $hwver;
|
||||
return $model
|
||||
if defined $model;
|
||||
return $obj->SUPER::model();
|
||||
}
|
||||
|
||||
sub hwver {
|
||||
my $obj = shift;
|
||||
my $hwver = $obj->hw_oid || undef;
|
||||
|
||||
return $hwver
|
||||
if defined $hwver;
|
||||
}
|
||||
|
||||
sub serial {
|
||||
my $obj = shift;
|
||||
my $serial = $obj->serial_oid || undef;
|
||||
|
||||
return $serial
|
||||
if defined $serial;
|
||||
return $obj->SUPER::serial();
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
SNMP::Info::Layer2::NSC - SNMP Interface to NSC Devices
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
# Let SNMP::Info determine the correct subclass for you.
|
||||
my $obj = new SNMP::Info(
|
||||
AutoSpecify => 1,
|
||||
Debug => 1,
|
||||
DestHost => 'myrouter',
|
||||
Community => 'public',
|
||||
Version => 2
|
||||
)
|
||||
or die "Can't connect to DestHost.\n";
|
||||
|
||||
my $class = $obj->class();
|
||||
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Subclass for NSC Devices
|
||||
|
||||
=head2 Inherited Classes
|
||||
|
||||
=over
|
||||
|
||||
=item SNMP::Info::Layer2
|
||||
|
||||
=back
|
||||
|
||||
=head2 Inherited Classes' MIBs
|
||||
|
||||
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
|
||||
|
||||
=head1 GLOBALS
|
||||
|
||||
These are methods that return scalar value from SNMP
|
||||
|
||||
=over
|
||||
|
||||
=item $obj->vendor()
|
||||
|
||||
Returns 'nsc-oem'
|
||||
|
||||
=item $obj->os()
|
||||
|
||||
Returns 'nsc-oem'
|
||||
|
||||
=item $obj->os_ver()
|
||||
|
||||
Returns the software version.
|
||||
|
||||
=item $obj->model()
|
||||
|
||||
Returns the model extracted.
|
||||
|
||||
=item $obj->serial()
|
||||
|
||||
Returns serial number.
|
||||
|
||||
=cut
|
||||
|
||||
=back
|
||||
116
lib/SNMP/Info/Layer2/Paradyne.pm
Executable file
116
lib/SNMP/Info/Layer2/Paradyne.pm
Executable file
@@ -0,0 +1,116 @@
|
||||
# SNMP::Info::Layer2::Paradyne - SNMP Interface to Paradyne Devices
|
||||
#
|
||||
# Copyright (c) 2020 by 135.
|
||||
|
||||
package SNMP::Info::Layer2::Paradyne;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Exporter;
|
||||
use SNMP::Info::Layer2;
|
||||
|
||||
@SNMP::Info::Layer2::Paradyne::ISA = qw/SNMP::Info::Layer2 Exporter/;
|
||||
@SNMP::Info::Layer2::Paradyne::EXPORT_OK = qw//;
|
||||
|
||||
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
|
||||
|
||||
$VERSION = '3.70-135';
|
||||
|
||||
%MIBS = ( %SNMP::Info::Layer2::MIBS, );
|
||||
|
||||
%GLOBALS = (
|
||||
%SNMP::Info::Layer2::GLOBALS,
|
||||
);
|
||||
|
||||
%FUNCS = ( %SNMP::Info::Layer2::FUNCS, );
|
||||
|
||||
%MUNGE = ( %SNMP::Info::Layer2::MUNGE, );
|
||||
|
||||
sub vendor {
|
||||
return 'paradyne';
|
||||
}
|
||||
|
||||
sub os {
|
||||
return 'prdn-os';
|
||||
}
|
||||
|
||||
sub os_ver {
|
||||
my $obj = shift;
|
||||
$obj->description =~ /S\/W\sRelease\:\s+(.*)\;/;
|
||||
return $1 if defined($1);
|
||||
return 'unknown';
|
||||
}
|
||||
|
||||
sub model {
|
||||
my $obj = shift;
|
||||
$obj->description =~ /PARADYNE\s+(.*)\;.*\;/;
|
||||
return $1 if defined($1);
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
SNMP::Info::Layer2::Paradyne - SNMP Interface to Paradyne Devices
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
# Let SNMP::Info determine the correct subclass for you.
|
||||
my $obj = new SNMP::Info(
|
||||
AutoSpecify => 1,
|
||||
Debug => 1,
|
||||
DestHost => 'myrouter',
|
||||
Community => 'public',
|
||||
Version => 2
|
||||
)
|
||||
or die "Can't connect to DestHost.\n";
|
||||
|
||||
my $class = $obj->class();
|
||||
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Subclass for Paradyne Devices running IOS-like software
|
||||
|
||||
=head2 Inherited Classes
|
||||
|
||||
=over
|
||||
|
||||
=item SNMP::Info::Layer2
|
||||
|
||||
=back
|
||||
|
||||
=head1 GLOBALS
|
||||
|
||||
These are methods that return scalar value from SNMP
|
||||
|
||||
=over
|
||||
|
||||
=item $obj->vendor()
|
||||
|
||||
Returns 'rapadyne'
|
||||
|
||||
=item $obj->os()
|
||||
|
||||
Returns 'prdn-os'
|
||||
|
||||
=item $obj->layers()
|
||||
|
||||
Ensures that layer two is reported, at least.
|
||||
|
||||
=item $obj->os_ver()
|
||||
|
||||
Returns the software version.
|
||||
|
||||
=item $obj->model
|
||||
|
||||
Returns the model extracted.
|
||||
|
||||
=item $obj->serial()
|
||||
|
||||
Returns serial number.
|
||||
|
||||
=cut
|
||||
|
||||
=back
|
||||
@@ -110,7 +110,7 @@ sub os {
|
||||
}
|
||||
|
||||
sub vendor {
|
||||
return 'alcatel-lucent';
|
||||
return 'alcatel';
|
||||
}
|
||||
|
||||
sub os_ver {
|
||||
|
||||
@@ -74,10 +74,22 @@ $VERSION = '3.70-135';
|
||||
|
||||
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
|
||||
|
||||
sub norm($) {
|
||||
my $var = shift;
|
||||
return norm_hash($var) if ref $var eq 'HASH';
|
||||
return $var if defined $var and $var !~ /^\s*$/ and $var !~ 'NOSUCHOBJECT';
|
||||
}
|
||||
|
||||
sub norm_hash {
|
||||
my $hash = shift;
|
||||
return $hash->{0} if $hash->{0} !~ /^\s*$/ and $hash->{0} !~ 'NOSUCHOBJECT';
|
||||
print "norm_hash return undef\n";
|
||||
}
|
||||
|
||||
sub model {
|
||||
my $dlink=shift;
|
||||
my $hw = $dlink->hwver() || undef;
|
||||
return $dlink->description() . ' HW:' . $hw if defined($hw);
|
||||
my $hw = norm($dlink->hwver()) || undef;
|
||||
return $dlink->description() . ' HW:' . $hw if norm($hw);
|
||||
return $dlink->description();
|
||||
}
|
||||
|
||||
@@ -102,54 +114,74 @@ sub os {
|
||||
|
||||
sub os_ver {
|
||||
my $obj = shift;
|
||||
return $obj->fwver();
|
||||
my $os_ver = undef;
|
||||
my $model = $obj->model();
|
||||
my $id = $obj->id();
|
||||
|
||||
#Due to the zoo of MIB from DLink by 1210 series
|
||||
$os_ver = norm($obj->session()->get($id.'.1.3.0')) if $model =~ /1210/;
|
||||
|
||||
while (not defined $os_ver) {
|
||||
$os_ver = norm($obj->dlink_fw());
|
||||
last if norm($os_ver);
|
||||
|
||||
$os_ver = norm($obj->session()->get('enterprises.171.10.94.89.89.2.4.0'));
|
||||
last;
|
||||
}
|
||||
|
||||
my $brom = $obj->brom();
|
||||
$os_ver .= ' bootrom:' . $brom if norm($brom) and norm($os_ver);
|
||||
|
||||
return $os_ver if norm($os_ver);
|
||||
}
|
||||
|
||||
sub serial {
|
||||
my $dlink = shift;
|
||||
my $model = $dlink->model();
|
||||
my $id = $dlink->id();
|
||||
my $obj = shift;
|
||||
my $model = $obj->model();
|
||||
my $id = $obj->id();
|
||||
my $serial;
|
||||
if ($model =~ /1210/) {
|
||||
#Due to the zoo of MIB from DLink by 1210 series
|
||||
$serial->{0} = $dlink->session()->get($id.'.1.30.0');
|
||||
$serial = norm($obj->session()->get($id.'.1.30.0'));
|
||||
} else {
|
||||
$serial = $dlink->dlink_serial_no();
|
||||
$serial = norm($obj->dlink_serial_no());
|
||||
}
|
||||
|
||||
return $serial->{0} if ( defined $serial->{0} and $serial->{0} !~ /^\s*$/ and $serial->{0} !~ 'NOSUCHOBJECT' );
|
||||
return $dlink->SUPER::serial();
|
||||
return $serial if norm($serial);
|
||||
return $obj->SUPER::serial();
|
||||
}
|
||||
|
||||
sub fwver {
|
||||
my $dlink=shift;
|
||||
my $model = $dlink->model();
|
||||
my $id = $dlink->id();
|
||||
my $fw;
|
||||
if ($model =~ /1210/) {
|
||||
#Due to the zoo of MIB from DLink by 1210 series
|
||||
$fw->{0} = $dlink->session()->get($id.'.1.3.0');
|
||||
} else {
|
||||
$fw = $dlink->dlink_fw();
|
||||
}
|
||||
return $fw->{0} if ( defined $fw->{0} and $fw->{0} !~ /^\s*$/ and $fw->{0} !~ 'NOSUCHOBJECT');
|
||||
sub brom {
|
||||
my $obj = shift;
|
||||
my $brom = undef;
|
||||
|
||||
$brom = norm($obj->session()->get('enterprises.171.10.94.89.89.2.10.0'));
|
||||
|
||||
return $brom if norm($brom);
|
||||
}
|
||||
|
||||
sub hwver {
|
||||
my $dlink=shift;
|
||||
my $id = $dlink->id();
|
||||
my $obj=shift;
|
||||
my $id = $obj->id();
|
||||
my $model = &SNMP::translateObj($id);
|
||||
my $hw;
|
||||
if ($model =~ /1210/) {
|
||||
#Due to the zoo of MIB from DLink by 1210 series
|
||||
$hw->{0} = $dlink->session()->get($id.'.1.2.0');
|
||||
} else {
|
||||
$hw = $dlink->dlink_hw();
|
||||
}
|
||||
return $hw->{0} if ( defined $hw->{0} and $hw->{0} !~ /^\s*$/ and $hw->{0} !~ 'NOSUCHOBJECT');
|
||||
my $hw = undef;
|
||||
|
||||
$hw = $dlink->session()->get('rmon.19.3.0');
|
||||
return $hw if defined($hw);
|
||||
#Due to the zoo of MIB from DLink by 1210 series
|
||||
$hw = norm($obj->session()->get($id.'.1.2.0')) if $model =~ /1210/;
|
||||
$hw = undef if norm($hw);
|
||||
|
||||
while(! defined $hw){
|
||||
$hw = norm($obj->dlink_hw());
|
||||
last if norm($hw);
|
||||
|
||||
$hw = norm($obj->session()->get('rmon.19.3.0'));
|
||||
last if norm($hw);
|
||||
|
||||
$hw = norm($obj->session()->get('enterprises.171.10.94.89.89.2.10.0'));
|
||||
last;
|
||||
}
|
||||
|
||||
return $hw if norm($hw);
|
||||
}
|
||||
|
||||
sub stp_i_root_port {
|
||||
|
||||
133
lib/SNMP/Info/Layer3/Deliberant.pm
Executable file
133
lib/SNMP/Info/Layer3/Deliberant.pm
Executable file
@@ -0,0 +1,133 @@
|
||||
# SNMP::Info::Layer3::Deliberant - SNMP Interface to Deliberant Devices
|
||||
#
|
||||
# Copyright (c) 2020 by 135.
|
||||
|
||||
package SNMP::Info::Layer3::Deliberant;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Exporter;
|
||||
use SNMP::Info::Layer3;
|
||||
|
||||
@SNMP::Info::Layer3::Deliberant::ISA = qw/SNMP::Info::Layer3 Exporter/;
|
||||
@SNMP::Info::Layer3::Deliberant::EXPORT_OK = qw//;
|
||||
|
||||
our ($VERSION, %GLOBALS, %MIBS, %FUNCS, %MUNGE);
|
||||
|
||||
$VERSION = '3.70-135';
|
||||
|
||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
||||
|
||||
%GLOBALS = (
|
||||
%SNMP::Info::Layer3::GLOBALS,
|
||||
'model_oid' => 'enterprises.32761.3.1.1.1.3.0',
|
||||
'submodel' => 'enterprises.32761.3.1.1.1.2.0',
|
||||
);
|
||||
|
||||
%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
|
||||
|
||||
%MUNGE = ( %SNMP::Info::Layer3::MUNGE, );
|
||||
|
||||
sub vendor {
|
||||
return 'deliberant';
|
||||
}
|
||||
|
||||
sub os {
|
||||
return 'deliberant-os';
|
||||
}
|
||||
|
||||
sub os_ver {
|
||||
my $obj = shift;
|
||||
my $os_ver;
|
||||
my $os_ver_oid = $obj->description;
|
||||
$os_ver_oid =~ /\,\s(.*)/;
|
||||
$os_ver = $1;
|
||||
|
||||
if (defined $os_ver) {
|
||||
return $os_ver;
|
||||
}
|
||||
return 'unknown';
|
||||
}
|
||||
sub model {
|
||||
my $obj = shift;
|
||||
my $id = $obj->id();
|
||||
my $model = $obj->model_oid || undef;
|
||||
my $submodel = $obj->submodel || undef;
|
||||
$model .= ' (' . $obj->submodel . ')' if defined($submodel);
|
||||
|
||||
return $model if defined $model;
|
||||
return $obj->SUPER::model();
|
||||
}
|
||||
|
||||
sub serial {
|
||||
my $obj = shift;
|
||||
return $obj->SUPER::serial();
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
SNMP::Info::Layer3::Deliberant - SNMP Interface to Deliberant Devices
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
# Let SNMP::Info determine the correct subclass for you.
|
||||
my $obj = new SNMP::Info(
|
||||
AutoSpecify => 1,
|
||||
Debug => 1,
|
||||
DestHost => 'myrouter',
|
||||
Community => 'public',
|
||||
Version => 2
|
||||
)
|
||||
or die "Can't connect to DestHost.\n";
|
||||
|
||||
my $class = $obj->class();
|
||||
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
Subclass for Deliberant Devices
|
||||
|
||||
=head2 Inherited Classes
|
||||
|
||||
=over
|
||||
|
||||
=item SNMP::Info::Layer3
|
||||
|
||||
=back
|
||||
|
||||
=head2 Inherited Classes' MIBs
|
||||
|
||||
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
|
||||
|
||||
=head1 GLOBALS
|
||||
|
||||
These are methods that return scalar value from SNMP
|
||||
|
||||
=over
|
||||
|
||||
=item $obj->vendor()
|
||||
|
||||
Returns 'deliberant-oem'
|
||||
|
||||
=item $obj->os()
|
||||
|
||||
Returns 'rotek-os'
|
||||
|
||||
=item $obj->os_ver()
|
||||
|
||||
Returns the software version.
|
||||
|
||||
=item $obj->model()
|
||||
|
||||
Returns the model extracted.
|
||||
|
||||
=item $obj->serial()
|
||||
|
||||
Returns serial number.
|
||||
|
||||
=cut
|
||||
|
||||
=back
|
||||
@@ -23,22 +23,15 @@ $VERSION = '3.70-135';
|
||||
%GLOBALS = (
|
||||
%SNMP::Info::Layer3::GLOBALS,
|
||||
'model_oid' => 'mib-2.47.1.1.1.1.13.1',
|
||||
'model_oid_41752' => 'enterprises.41752.6.1.1.1.19.0',
|
||||
'model_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.19.0',
|
||||
'serial_oid' => 'mib-2.47.1.1.1.1.11.1',
|
||||
'serial_oid_41752' => 'enterprises.41752.6.1.1.1.14.0',
|
||||
'serial_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.14.0',
|
||||
'os_ver_oid' => 'mib-2.47.1.1.1.1.10.1',
|
||||
'os_ver_oid_41752' => 'enterprises.41752.6.1.1.1.1.0',
|
||||
'os_ver_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.1.0',
|
||||
'brom_oid' => 'mib-2.47.1.1.1.1.9.1',
|
||||
'brom_oid_41752' => 'enterprises.41752.6.1.1.1.13.0',
|
||||
'brom_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.13.0',
|
||||
'hw_oid' => 'mib-2.47.1.1.1.1.8.1',
|
||||
'hw_oid_41752' => 'enterprises.41752.6.1.1.1.2.0',
|
||||
'hw_oid_8886_6_140' => 'enterprises.8886.6.1.1.1.2.0',
|
||||
'model_rotek' => 'enterprises.41752.3.1.1.1.3.0',
|
||||
'model_41752' => 'enterprises.41752.3.1.1.1.3.0',
|
||||
);
|
||||
|
||||
%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
|
||||
@@ -47,45 +40,20 @@ $VERSION = '3.70-135';
|
||||
|
||||
sub vendor {
|
||||
my $obj = shift;
|
||||
return main($obj)->{vendor};
|
||||
return 'raisecom';
|
||||
}
|
||||
|
||||
sub os {
|
||||
my $obj = shift;
|
||||
return main($obj)->{os};
|
||||
return 'raisecom-os';
|
||||
}
|
||||
|
||||
sub main {
|
||||
my $obj = shift;
|
||||
my $response = undef; my $serial = undef; my $model = undef; my $hw = undef; my $os_ver = undef; my $brom = undef;
|
||||
my $vendor = 'raisecom'; my $os = 'rcios';
|
||||
my $id = $obj->id;
|
||||
|
||||
#Rotek kostilyng
|
||||
if ($id =~ /41752$/) {
|
||||
my %rotek = ();#undef;#('vendor', 'os', 'model', 'os_ver', 'serial');
|
||||
for my $key ('vendor', 'os', 'model', 'os_ver', 'serial') {
|
||||
no strict 'refs';
|
||||
my $sub = *{'SNMP::Info::Layer3::Rotek::'.$key};
|
||||
$rotek{$key} = &$sub($obj);
|
||||
}
|
||||
return %rotek;
|
||||
}
|
||||
|
||||
if ( $id =~ /41752\.26\.502/ ) {
|
||||
$model = $obj->model_oid_41752 || undef;
|
||||
|
||||
$hw = ($obj->hw_oid_41752 =~ /.*\sversion\s(.*)/)[0];
|
||||
|
||||
$obj->os_ver_oid_41752 =~ /ROS_(.*)\.(\d+)/;
|
||||
$os_ver = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
|
||||
|
||||
$obj->brom_oid_41752 =~ /.*_BOOT_(.*)_(\d+)/;
|
||||
$brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
|
||||
|
||||
$serial = $obj->serial_oid_41752 || undef;
|
||||
}
|
||||
elsif ($id =~ /8886\.6\.(140|191|150|21[3,4])$/) {
|
||||
if ($id =~ /8886\.6\.(140|191|150|21[3,4])$/) {
|
||||
$model = $obj->model_oid_8886_6_140 || undef;
|
||||
|
||||
$obj->os_ver_oid_8886_6_140 =~ /ROS_(.*)\.ISCOM.*\.(\d*\.+\d*)/;
|
||||
@@ -100,7 +68,7 @@ sub main {
|
||||
|
||||
#All another known ways to HW
|
||||
while (not defined($hw)) {
|
||||
$obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/;
|
||||
$obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/ if defined $obj->hw_oid_8886_6_140;
|
||||
$hw = $1 if defined $1;
|
||||
last;
|
||||
}
|
||||
@@ -122,36 +90,71 @@ sub main {
|
||||
last;
|
||||
}
|
||||
|
||||
#All another known ways to Bootrom
|
||||
$obj->brom_oid_8886_6_140 =~ /Bootstrap_([\d\W]+)\.ISCOM.*\.(\d*\.+\d*)/;
|
||||
$brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
|
||||
|
||||
$brom = $obj->brom_oid || undef if not defined($brom);
|
||||
|
||||
#Serial
|
||||
$serial = $obj->serial_oid_8886_6_140 || undef;
|
||||
|
||||
####
|
||||
#final formatting before output.
|
||||
####
|
||||
$model .= ' HW:' . $hw if defined($model) and defined($hw);
|
||||
$os_ver .= ' bootrom:' . $brom if defined($os_ver) and defined($brom);
|
||||
#$model .= ' HW:' . $hw if defined($model) and defined($hw);
|
||||
#$os_ver .= ' bootrom:' . $brom if defined($os_ver) and defined($brom);
|
||||
|
||||
return { 'vendor' => $vendor, 'os' => $os, 'model' => $model, 'os_ver' => $os_ver, 'serial' => $serial };
|
||||
return { 'model' => $model, 'os_ver' => $os_ver, 'serial' => $serial };
|
||||
}
|
||||
|
||||
sub os_ver {
|
||||
my $obj = shift;
|
||||
return main($obj)->{os_ver};
|
||||
my $os_ver = $obj->main()->{os_ver};
|
||||
my $brom = $obj->brom() || undef;
|
||||
|
||||
$os_ver .= ' Bootrom:' . $brom if defined $brom;
|
||||
return $os_ver if defined $os_ver;
|
||||
}
|
||||
sub model {
|
||||
my $obj = shift;
|
||||
return main($obj)->{model};
|
||||
my $model = $obj->main()->{model} || undef;
|
||||
my $hw = $obj->hw() || undef;
|
||||
|
||||
if (not defined $model or $model eq 'NOSUCHOBJECT') {
|
||||
$model = $obj->session()->get('enterprises.8886.22.2.1.2.0') || undef;
|
||||
}
|
||||
|
||||
$model .= ' HW:' . $hw if defined $hw;
|
||||
return $model if defined $model;
|
||||
return $obj->id();
|
||||
}
|
||||
|
||||
sub serial {
|
||||
my $obj = shift;
|
||||
return main($obj)->{serial};
|
||||
my $serial = $obj->main()->{serial} || undef;
|
||||
|
||||
while(not defined $serial) {
|
||||
$serial = $obj->session()->get('mib-2.47.1.1.1.1.11.1') || undef;
|
||||
last;
|
||||
}
|
||||
return $serial if defined $serial;
|
||||
}
|
||||
|
||||
sub hwver {
|
||||
my $obj = shift;
|
||||
my $hw = $obj->session()->get('mib-2.47.1.1.1.1.8.1') || undef;
|
||||
|
||||
while (not defined($hw)) {
|
||||
$obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/ if defined $obj->hw_oid_8886_6_140;
|
||||
$hw = $1 if defined $1;
|
||||
last;
|
||||
}
|
||||
return $hw if defined $hw;
|
||||
}
|
||||
|
||||
sub brom {
|
||||
my $obj = shift;
|
||||
my $brom = undef;
|
||||
|
||||
$obj->brom_oid_8886_6_140 =~ /Bootstrap_([\d\W]+)\.ISCOM.*\.(\d*\.+\d*)/ if defined $obj->brom_oid_8886_6_140;
|
||||
$brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
|
||||
|
||||
$brom = $obj->brom_oid || undef if not defined($brom);
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -20,9 +20,7 @@ $VERSION = '3.70-135';
|
||||
|
||||
%GLOBALS = (
|
||||
%SNMP::Info::Layer3::GLOBALS,
|
||||
'model_41752' => 'enterprises.41752.3.1.1.1.3.0',
|
||||
'model_rotek' => 'enterprises.32761.3.1.1.1.3.0',
|
||||
'submodel' => 'enterprises.32761.3.1.1.1.2.0',
|
||||
'model_oid' => 'enterprises.41752.3.1.1.1.3.0',
|
||||
);
|
||||
|
||||
%FUNCS = ( %SNMP::Info::Layer3::FUNCS, );
|
||||
@@ -34,33 +32,91 @@ sub vendor {
|
||||
}
|
||||
|
||||
sub os {
|
||||
return 'rotek';
|
||||
return 'rotek-os';
|
||||
}
|
||||
|
||||
sub os_ver {
|
||||
my $obj = shift;
|
||||
my $os_ver;
|
||||
my $os_ver_oid = $obj->description();
|
||||
$os_ver_oid =~ /\,\s(.*)/;
|
||||
$os_ver = $1;
|
||||
my $os_ver = undef;
|
||||
|
||||
if (defined $os_ver) {
|
||||
return $os_ver;
|
||||
my $os_ver_oid = $obj->os_ver_oid_41752 || undef;
|
||||
$os_ver_oid =~ /ROS_(.*)\.(\d+)/ || undef $_ if defined $os_ver_oid;
|
||||
$os_ver = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
|
||||
|
||||
while(not defined $os_ver) {
|
||||
$obj->description =~ /\,\s(.*)/;
|
||||
$os_ver = $1 if defined $1;
|
||||
last if defined $os_ver;
|
||||
|
||||
$obj->description() =~ /[\w,\W,\d,\-]+v\d+rev\d+\s+([\d,\.]+)\s+[\w,\-,\d]+$/;
|
||||
$os_ver = $1 if defined $1;
|
||||
last;
|
||||
}
|
||||
|
||||
return $os_ver if defined $os_ver;
|
||||
return 'unknown';
|
||||
}
|
||||
|
||||
sub brom {
|
||||
my $obj = shift;
|
||||
my $brom = undef;
|
||||
$obj->brom_oid_41752 =~ /.*_BOOT_(.*)_(\d+)/;
|
||||
$brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2);
|
||||
|
||||
return $brom if defined $brom;
|
||||
}
|
||||
|
||||
sub model {
|
||||
my $obj = shift;
|
||||
my $id = $obj->id();
|
||||
if ($id =~ /32761$/) {
|
||||
return $obj->model_rotek . ' (' . $obj->submodel . ')';
|
||||
}
|
||||
elsif ($id =~ /41752$/) {
|
||||
return $obj->model_41752;
|
||||
my $hw = $obj->hwver() || undef;
|
||||
my $model = $obj->model_oid || undef;
|
||||
|
||||
while (not defined $model) {
|
||||
$model = $obj->model_oid_41752 || undef;
|
||||
last if defined $model;
|
||||
|
||||
$obj->description() =~ /([\w,\W,\d,\-]+)v\d+rev\d+\s+[\d,\.]+\s+[\w,\-,\d]+$/;
|
||||
$model = $1 if defined $1;
|
||||
last if defined $model;
|
||||
|
||||
last;
|
||||
}
|
||||
|
||||
$model .= ' HW:' . $hw if defined $hw;
|
||||
|
||||
return $model if defined $model;
|
||||
return $obj->SUPER::model();
|
||||
}
|
||||
|
||||
sub serial {
|
||||
my $obj = shift;
|
||||
my $serial = $obj->serial_oid_41752 || undef;
|
||||
|
||||
while (not defined $serial) {
|
||||
$obj->description() =~ /[\w,\W,\d,\-]+v\d+rev\d+\s+[\d,\.]+\s+([\w,\-,\d]+)$/;
|
||||
$serial = $1 if defined $1;
|
||||
|
||||
last;
|
||||
}
|
||||
return $serial if defined $serial;
|
||||
return $obj->SUPER::serial();
|
||||
}
|
||||
|
||||
sub hwver{
|
||||
my $obj = shift;
|
||||
my $hw = ($obj->hw_oid_41752 =~ /.*\sversion\s(.*)/)[0] || undef if defined $obj->hw_oid_41752;
|
||||
|
||||
while (not defined $hw) {
|
||||
$obj->description() =~ /[\w,\W,\d,\-]+(v\d+rev\d+)\s+[\d,\.]+\s+[\w,\-,\d]+$/;
|
||||
$hw = $1 if defined $1;
|
||||
|
||||
last;
|
||||
}
|
||||
|
||||
return $hw if defined $hw;
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
@@ -111,7 +167,7 @@ Returns 'rotek'
|
||||
|
||||
=item $obj->os()
|
||||
|
||||
Returns 'rotek'
|
||||
Returns 'rotek-os'
|
||||
|
||||
=item $obj->os_ver()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user