exit $UNKNOWN;
}
+sub convert_time {
+ my $in = shift;
+ my ($ticks, $unit) = ($in =~ /^(\d+)([smhdw]?)$/);
+
+ if ($unit eq 's' || $unit eq '') { }
+ elsif ($unit eq 'm') { $ticks *= 60; }
+ elsif ($unit eq 'h') { $ticks *= 60*60; }
+ elsif ($unit eq 'd') { $ticks *= 60*60*24; }
+ elsif ($unit eq 'w') { $ticks *= 60*60*24*7; }
+ else { die "Invalid unit '$unit' in '$in'\n" }
+ return $ticks;
+}
+
+
if (!GetOptions (
'--help' => \$params->{'help'},
'--version' => \$params->{'version'},
'--quiet' => \$params->{'quiet'},
'--ignore-pid-namespaces' => \$params->{'ignore_pid_namespaces'},
'--verbose' => \$params->{'verbose'},
+ '--ignore-younger=s' => \$params->{'ignore_younger'},
'-v' => \$params->{'verbose'},
'--config=s' => \$params->{'config'},
)) {
dief("Config->ignorelist is not an array!\n");
}
-
my %processes;
sub getPIDs($$) {
close F;
return 0;
}
+sub getYoungProcesses() {
+ my $ignore_hash = {};
+ if (defined $params->{'ignore_younger'}) {
+ eval "use Proc::ProcessTable; 1" or die "We need Proc::ProcessTable to use --ignore-younger.\n";
+ my $min_age = convert_time($params->{'ignore_younger'});
+ my $cutoff = time() - $min_age;
+
+ my $process_table = new Proc::ProcessTable(enable_ttys => 0);
+ for my $p ( @{$process_table->table} ){
+ $ignore_hash->{$p->pid} = 1 if $p->start > $cutoff;
+ }
+ }
+ return $ignore_hash;
+}
+
+
+my $IGNORE_YOUNG_PROCESSES = getYoungProcesses();
+
+
+
my $INVSERVER = inVserver();
next LINE if $ignore;
}
next if ($INVSERVER && ($process eq 'init') && ($pid == 1) && ($user eq 'root'));
+ if (exists $IGNORE_YOUNG_PROCESSES->{$pid}) {
+ if ( $params->{'verbose'} ) {
+ print STDERR "ignoring young $process($pid) because of [$path]:\n";
+ print STDERR $line;
+ }
+ next LINE
+ }
if ( $params->{'verbose'} ) {
print STDERR "adding $process($pid) because of [$path]:\n";
print STDERR $line;
-dsa-nagios-checks (112) UNRELEASED; urgency=medium
+dsa-nagios-checks (113) UNRELEASED; urgency=medium
* maintainer scripts: use dpkg-maintscript-helper to clean out
/etc/cron.d/dsa-nagios-checks.
+ * libproc-processtable-perl: allow ignoring young processes.
- -- Peter Palfrader <weasel@debian.org> Thu, 01 Feb 2018 18:31:35 +0100
+ -- Peter Palfrader <weasel@debian.org> Sun, 04 Feb 2018 12:23:46 +0100
dsa-nagios-checks (111) unstable; urgency=medium
Package: dsa-nagios-checks
Architecture: all
-Depends: nagios-nrpe-server, nagios-plugins-basic, ${misc:Depends}, binutils, libberkeleydb-perl, dsa-ssh-weak-keys, ruby, python, libyaml-syck-perl
+Depends: nagios-nrpe-server, nagios-plugins-basic, ${misc:Depends}, binutils, libberkeleydb-perl, dsa-ssh-weak-keys, ruby, python, libyaml-syck-perl, libproc-processtable-perl
Recommends: libnet-dns-sec-perl
Suggests: hpacucli
Conflicts: dsa-nagios-nrpe-config