Retrieve Serial Number and device type for CheckPoint (#358)

* Retrieve Serial Number and device type for CheckPoint devices at right place in MIB

* Retrieve Serial Number and device type for CheckPoint

* Retrieve Serial Number and device type for CheckPoint

* Test not correct with cache data
This commit is contained in:
Ambroise
2019-10-02 19:48:56 +02:00
committed by nick n
parent 762a01e619
commit 51be2d5dc5
2 changed files with 64 additions and 27 deletions

View File

@@ -54,6 +54,10 @@ $VERSION = '3.68';
%SNMP::Info::Layer3::GLOBALS, %SNMP::Info::Layer3::GLOBALS,
'netsnmp_vers' => 'versionTag', 'netsnmp_vers' => 'versionTag',
'hrSystemUptime' => 'hrSystemUptime', 'hrSystemUptime' => 'hrSystemUptime',
'serial_number' => 'svnApplianceSerialNumber',
'product_name' => 'svnApplianceProductName',
'manufacturer' => 'svnApplianceManufacturer',
'version' => 'svnVersion',
); );
%FUNCS = ( %FUNCS = (
@@ -68,7 +72,13 @@ $VERSION = '3.68';
); );
sub vendor { sub vendor {
return 'checkpoint'; my $ckp = shift;
if (defined $ckp->manufacturer) {
return $ckp->manufacturer;
} else {
return 'checkpoint';
}
} }
sub model { sub model {
@@ -77,7 +87,9 @@ sub model {
my $model = &SNMP::translateObj($id); my $model = &SNMP::translateObj($id);
if (defined $model) { if (defined $ckp->product_name) {
return $ckp->product_name;
} elsif (defined $model) {
$model =~ s/^checkPoint//; $model =~ s/^checkPoint//;
return $model; return $model;
} else { } else {
@@ -91,41 +103,48 @@ sub os {
sub os_ver { sub os_ver {
my $ckp = shift; my $ckp = shift;
my $extend_table = $ckp->extend_output_table() || {}; if (defined $ckp->version) {
return $ckp->version;
} else {
my $extend_table = $ckp->extend_output_table() || {};
my $descr = $ckp->description(); my $descr = $ckp->description();
my $vers = $ckp->netsnmp_vers(); my $vers = $ckp->netsnmp_vers();
my $os_ver = undef; my $os_ver = undef;
foreach my $ex (keys %$extend_table) { foreach my $ex (keys %$extend_table) {
(my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g; (my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g;
if ($name eq 'ckpVersion') { if ($name eq 'ckpVersion') {
return $1 if ($extend_table->{$ex} =~ /^This is Check Point's software version (.*)$/); return $1 if ($extend_table->{$ex} =~ /^This is Check Point's software version (.*)$/);
last; last;
}
} }
}
$os_ver = $1 if ( $descr =~ /^\S+\s+\S+\s+(\S+)\s+/ ); $os_ver = $1 if ( $descr =~ /^\S+\s+\S+\s+(\S+)\s+/ );
if ($vers) { if ($vers) {
$os_ver = "???" unless defined($os_ver); $os_ver = "???" unless defined($os_ver);
$os_ver .= " / Net-SNMP " . $vers; $os_ver .= " / Net-SNMP " . $vers;
}
return $os_ver;
} }
return $os_ver;
} }
sub serial { sub serial {
my $ckp = shift; my $ckp = shift;
my $extend_table = $ckp->extend_output_table() || {};
foreach my $ex (keys %$extend_table) { if (defined $ckp->serial_number) {
(my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g; return $ckp->serial_number;
if ($name eq 'ckpAsset') { } else {
return $1 if ($extend_table->{$ex} =~ /Serial Number: (\S+)/); my $extend_table = $ckp->extend_output_table() || {};
last;
foreach my $ex (keys %$extend_table) {
(my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g;
if ($name eq 'ckpAsset') {
return $1 if ($extend_table->{$ex} =~ /Serial Number: (\S+)/);
last;
}
} }
} }
return ''; return '';
} }

View File

@@ -53,6 +53,10 @@ sub setup : Tests(setup) {
# CHECKPOINT-MIB::fw # CHECKPOINT-MIB::fw
'_id' => '.1.3.6.1.4.1.2620.1.1', '_id' => '.1.3.6.1.4.1.2620.1.1',
'store' => {}, 'store' => {},
'_serial_number' => '0123456789abcdef',
'_product_name' => 'Check Point 12200',
'_manufacturer' => 'Checkpoint',
'_version' => 'R80.20',
}; };
$test->{info}->cache($cache_data); $test->{info}->cache($cache_data);
} }
@@ -68,14 +72,28 @@ sub vendor : Tests(2) {
my $test = shift; my $test = shift;
can_ok($test->{info}, 'vendor'); can_ok($test->{info}, 'vendor');
is($test->{info}->vendor(), 'checkpoint', q(Vendor returns 'checkpoint')); is($test->{info}->vendor(), 'Checkpoint', q(Vendor returns 'Checkpoint'));
}
sub os_ver : Tests(2) {
my $test = shift;
can_ok($test->{info}, 'os_ver');
is($test->{info}->os_ver(), 'R80.20',q(OS Version return 'R80.20'));
}
sub serial : Tests(2) {
my $test = shift;
can_ok($test->{info}, 'serial');
is($test->{info}->serial(), '0123456789abcdef', q(Serial returns '0123456789abcdef'));
} }
sub model : Tests(3) { sub model : Tests(3) {
my $test = shift; my $test = shift;
can_ok($test->{info}, 'model'); can_ok($test->{info}, 'model');
is($test->{info}->model(), 'fw', q(Model is expected value)); is($test->{info}->model(), 'Check Point 12200', q(Model is expected value));
$test->{info}->clear_cache(); $test->{info}->clear_cache();
is($test->{info}->model(), undef, q(No description returns undef model)); is($test->{info}->model(), undef, q(No description returns undef model));