enh(ntp): add epoch support time (#2756)
This commit is contained in:
parent
995c9fee9a
commit
7feb4d4dcd
|
@ -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).
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue