enh(ntp): add epoch support time (#2756)

This commit is contained in:
qgarnier 2021-04-30 10:06:53 +02:00 committed by GitHub
parent 995c9fee9a
commit 7feb4d4dcd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 48 additions and 6 deletions

View File

@ -56,12 +56,19 @@ sub set_counters {
];
}
sub default_date_oid {
my ($self, %options) = @_;
return '.1.3.6.1.2.1.25.1.2.0';
}
sub new {
my ($class, %options) = @_;
my $self = $class->SUPER::new(package => __PACKAGE__, %options);
bless $self, $class;
$options{options}->add_options(arguments => {
$options{options}->add_options(arguments => {
'oid:s' => { name => 'oid' },
'ntp-hostname:s' => { name => 'ntp_hostname' },
'ntp-port:s' => { name => 'ntp_port', default => 123 },
'timezone:s' => { name => 'timezone' }
@ -82,13 +89,27 @@ sub check_options {
}
}
sub get_target_time {
sub get_from_epoch {
my ($self, %options) = @_;
my $oid_hrSystemDate = '.1.3.6.1.2.1.25.1.2.0';
my $result = $options{snmp}->get_leef(oids => [ $oid_hrSystemDate ], nothing_quit => 1);
my $timezone = 'UTC';
if (defined($self->{option_results}->{timezone}) && $self->{option_results}->{timezone} ne '') {
$timezone = $self->{option_results}->{timezone};
}
my @remote_date = unpack 'n C6 a C2', $result->{$oid_hrSystemDate};
my $tz = centreon::plugins::misc::set_timezone(name => $timezone);
my $dt = DateTime->from_epoch(
epoch => $options{date},
%$tz
);
my @remote_date = ($dt->year, $dt->month, $dt->day, $dt->hour, $dt->minute, $dt->second);
return ($dt->epoch, \@remote_date, $timezone);
}
sub get_from_datetime {
my ($self, %options) = @_;
my @remote_date = unpack('n C6 a C2', $options{date});
my $timezone = 'UTC';
if (defined($self->{option_results}->{timezone}) && $self->{option_results}->{timezone} ne '') {
$timezone = $self->{option_results}->{timezone};
@ -110,6 +131,22 @@ sub get_target_time {
return ($dt->epoch, \@remote_date, $timezone);
}
sub get_target_time {
my ($self, %options) = @_;
my $oid_date = $self->default_date_oid();
if (defined($self->{option_results}->{oid}) && $self->{option_results}->{oid} ne '') {
$oid_date = $self->{option_results}->{oid};
}
my $result = $options{snmp}->get_leef(oids => [ $oid_date ], nothing_quit => 1);
if ($result->{$oid_date} =~ /^[0-9]{10}$/) {
return $self->get_from_epoch(date => $result->{$oid_date});
}
return $self->get_from_datetime(date => $result->{$oid_date});
}
sub manage_selection {
my ($self, %options) = @_;
@ -161,6 +198,10 @@ Use threshold with (+-) 2 seconds offset (minimum).
=over 8
=item B<--oid>
Override default OID.
=item B<--warning-offset>
Time offset warning threshold (in seconds).

View File

@ -36,7 +36,8 @@ sub new {
'hardware' => 'storage::dell::equallogic::snmp::mode::hardware',
'interfaces' => 'snmp_standard::mode::interfaces',
'list-interfaces' => 'snmp_standard::mode::listinterfaces',
'pool-usage' => 'storage::dell::equallogic::snmp::mode::poolusage'
'pool-usage' => 'storage::dell::equallogic::snmp::mode::poolusage',
'uptime' => 'snmp_standard::mode::uptime'
};
return $self;