diff options
| author | Sven Nierlein <sven@consol.de> | 2023-10-26 11:26:41 +0200 |
|---|---|---|
| committer | Sven Nierlein <sven@consol.de> | 2023-10-26 11:26:41 +0200 |
| commit | 03bde80abbda6fba2225568c3285a2ff2b5445a8 (patch) | |
| tree | c617e578c982daab56a0a94fa627a3b5f7efe31b | |
| parent | db76f6867c8e6af44eebb85fef0e5ac4e10c65c6 (diff) | |
| download | monitoring-plugins-03bde80abbda6fba2225568c3285a2ff2b5445a8.tar.gz | |
check_mailq: exit on empty strings and exit early
in case of $utils::PATH_TO_MAILQ beeing an empty string, the "defined" is still true
and leads to misleading error messages.
While on it, rewrite cascaded if/elsifs to more readably exit-early ifs.
| -rwxr-xr-x | plugins-scripts/check_mailq.pl | 145 |
1 files changed, 69 insertions, 76 deletions
diff --git a/plugins-scripts/check_mailq.pl b/plugins-scripts/check_mailq.pl index abdc7736..f143c6fa 100755 --- a/plugins-scripts/check_mailq.pl +++ b/plugins-scripts/check_mailq.pl | |||
| @@ -83,20 +83,19 @@ alarm($opt_t); | |||
| 83 | # switch based on MTA | 83 | # switch based on MTA |
| 84 | 84 | ||
| 85 | if ($mailq eq "sendmail") { | 85 | if ($mailq eq "sendmail") { |
| 86 | if( ! $utils::PATH_TO_MAILQ) { | ||
| 87 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | ||
| 88 | exit $ERRORS{'UNKNOWN'}; | ||
| 89 | } | ||
| 90 | |||
| 91 | if ( ! -x $utils::PATH_TO_MAILQ) { | ||
| 92 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 93 | exit $ERRORS{'UNKNOWN'}; | ||
| 94 | } | ||
| 86 | 95 | ||
| 87 | ## open mailq | 96 | ## open mailq |
| 88 | if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { | 97 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { |
| 89 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { | 98 | print "ERROR: could not open $sudo $utils::PATH_TO_MAILQ \n"; |
| 90 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; | ||
| 91 | exit $ERRORS{'UNKNOWN'}; | ||
| 92 | } | ||
| 93 | }elsif( defined $utils::PATH_TO_MAILQ){ | ||
| 94 | unless (-x $utils::PATH_TO_MAILQ) { | ||
| 95 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 96 | exit $ERRORS{'UNKNOWN'}; | ||
| 97 | } | ||
| 98 | } else { | ||
| 99 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | ||
| 100 | exit $ERRORS{'UNKNOWN'}; | 99 | exit $ERRORS{'UNKNOWN'}; |
| 101 | } | 100 | } |
| 102 | # single queue empty | 101 | # single queue empty |
| @@ -224,7 +223,6 @@ if ($mailq eq "sendmail") { | |||
| 224 | 223 | ||
| 225 | } | 224 | } |
| 226 | 225 | ||
| 227 | |||
| 228 | ## close mailq | 226 | ## close mailq |
| 229 | close (MAILQ); | 227 | close (MAILQ); |
| 230 | 228 | ||
| @@ -236,8 +234,6 @@ if ($mailq eq "sendmail") { | |||
| 236 | ## shut off the alarm | 234 | ## shut off the alarm |
| 237 | alarm(0); | 235 | alarm(0); |
| 238 | 236 | ||
| 239 | |||
| 240 | |||
| 241 | ## now check the queue length(s) | 237 | ## now check the queue length(s) |
| 242 | 238 | ||
| 243 | if ($msg_q == 0) { | 239 | if ($msg_q == 0) { |
| @@ -335,40 +331,38 @@ if ($mailq eq "sendmail") { | |||
| 335 | 331 | ||
| 336 | } # end of ($mailq eq "sendmail") | 332 | } # end of ($mailq eq "sendmail") |
| 337 | elsif ( $mailq eq "postfix" ) { | 333 | elsif ( $mailq eq "postfix" ) { |
| 338 | 334 | if( ! $utils::PATH_TO_MAILQ ) { | |
| 339 | ## open mailq | ||
| 340 | if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { | ||
| 341 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ$mailq_args | " ) ) { | ||
| 342 | print "ERROR: could not open $utils::PATH_TO_MAILQ$mailq_args \n"; | ||
| 343 | exit $ERRORS{'UNKNOWN'}; | ||
| 344 | } | ||
| 345 | }elsif( defined $utils::PATH_TO_MAILQ){ | ||
| 346 | unless (-x $utils::PATH_TO_MAILQ) { | ||
| 347 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 348 | exit $ERRORS{'UNKNOWN'}; | ||
| 349 | } | ||
| 350 | } else { | ||
| 351 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | 335 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; |
| 352 | exit $ERRORS{'UNKNOWN'}; | 336 | exit $ERRORS{'UNKNOWN'}; |
| 353 | } | 337 | } |
| 354 | 338 | ||
| 339 | if ( ! -x $utils::PATH_TO_MAILQ) { | ||
| 340 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 341 | exit $ERRORS{'UNKNOWN'}; | ||
| 342 | } | ||
| 355 | 343 | ||
| 356 | @lines = reverse <MAILQ>; | 344 | ## open mailq |
| 345 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ$mailq_args | " ) ) { | ||
| 346 | print "ERROR: could not open $utils::PATH_TO_MAILQ$mailq_args \n"; | ||
| 347 | exit $ERRORS{'UNKNOWN'}; | ||
| 348 | } | ||
| 357 | 349 | ||
| 358 | # close qmail-qstat | 350 | @lines = reverse <MAILQ>; |
| 359 | close MAILQ; | ||
| 360 | 351 | ||
| 361 | if ( $? ) { | 352 | # close qmail-qstat |
| 362 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ$mailq_args",$/; | 353 | close MAILQ; |
| 363 | exit $ERRORS{CRITICAL}; | ||
| 364 | } | ||
| 365 | 354 | ||
| 366 | ## shut off the alarm | 355 | if ( $? ) { |
| 367 | alarm(0); | 356 | print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ$mailq_args",$/; |
| 357 | exit $ERRORS{CRITICAL}; | ||
| 358 | } | ||
| 368 | 359 | ||
| 369 | # check queue length | 360 | ## shut off the alarm |
| 370 | if ($lines[0]=~/Kbytes in (\d+)/) { | 361 | alarm(0); |
| 371 | $msg_q = $1 ; | 362 | |
| 363 | # check queue length | ||
| 364 | if ($lines[0]=~/Kbytes in (\d+)/) { | ||
| 365 | $msg_q = $1 ; | ||
| 372 | }elsif ($lines[0]=~/Mail queue is empty/) { | 366 | }elsif ($lines[0]=~/Mail queue is empty/) { |
| 373 | $msg_q = 0; | 367 | $msg_q = 0; |
| 374 | }else{ | 368 | }else{ |
| @@ -417,20 +411,19 @@ elsif ( $mailq eq "postfix" ) { | |||
| 417 | } | 411 | } |
| 418 | } # end of ($mailq eq "postfix") | 412 | } # end of ($mailq eq "postfix") |
| 419 | elsif ( $mailq eq "qmail" ) { | 413 | elsif ( $mailq eq "qmail" ) { |
| 414 | if ( ! $utils::PATH_TO_QMAIL_QSTAT ) { | ||
| 415 | print "ERROR: \$utils::PATH_TO_QMAIL_QSTAT is not defined\n"; | ||
| 416 | exit $ERRORS{'UNKNOWN'}; | ||
| 417 | } | ||
| 418 | |||
| 419 | if ( ! -x $utils::PATH_TO_QMAIL_QSTAT) { | ||
| 420 | print "ERROR: $utils::PATH_TO_QMAIL_QSTAT is not executable by (uid $>:gid($)))\n"; | ||
| 421 | exit $ERRORS{'UNKNOWN'}; | ||
| 422 | } | ||
| 420 | 423 | ||
| 421 | # open qmail-qstat | 424 | # open qmail-qstat |
| 422 | if ( defined $utils::PATH_TO_QMAIL_QSTAT && -x $utils::PATH_TO_QMAIL_QSTAT ) { | 425 | if (! open (MAILQ, "$sudo $utils::PATH_TO_QMAIL_QSTAT | " ) ) { |
| 423 | if (! open (MAILQ, "$sudo $utils::PATH_TO_QMAIL_QSTAT | " ) ) { | 426 | print "ERROR: could not open $utils::PATH_TO_QMAIL_QSTAT \n"; |
| 424 | print "ERROR: could not open $utils::PATH_TO_QMAIL_QSTAT \n"; | ||
| 425 | exit $ERRORS{'UNKNOWN'}; | ||
| 426 | } | ||
| 427 | }elsif( defined $utils::PATH_TO_QMAIL_QSTAT){ | ||
| 428 | unless (-x $utils::PATH_TO_QMAIL_QSTAT) { | ||
| 429 | print "ERROR: $utils::PATH_TO_QMAIL_QSTAT is not executable by (uid $>:gid($)))\n"; | ||
| 430 | exit $ERRORS{'UNKNOWN'}; | ||
| 431 | } | ||
| 432 | } else { | ||
| 433 | print "ERROR: \$utils::PATH_TO_QMAIL_QSTAT is not defined\n"; | ||
| 434 | exit $ERRORS{'UNKNOWN'}; | 427 | exit $ERRORS{'UNKNOWN'}; |
| 435 | } | 428 | } |
| 436 | 429 | ||
| @@ -500,22 +493,22 @@ elsif ( $mailq eq "qmail" ) { | |||
| 500 | 493 | ||
| 501 | } # end of ($mailq eq "qmail") | 494 | } # end of ($mailq eq "qmail") |
| 502 | elsif ( $mailq eq "exim" ) { | 495 | elsif ( $mailq eq "exim" ) { |
| 503 | ## open mailq | 496 | if ( ! $utils::PATH_TO_MAILQ ) { |
| 504 | if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { | ||
| 505 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { | ||
| 506 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; | ||
| 507 | exit $ERRORS{'UNKNOWN'}; | ||
| 508 | } | ||
| 509 | }elsif( defined $utils::PATH_TO_MAILQ){ | ||
| 510 | unless (-x $utils::PATH_TO_MAILQ) { | ||
| 511 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 512 | exit $ERRORS{'UNKNOWN'}; | ||
| 513 | } | ||
| 514 | } else { | ||
| 515 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | 497 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; |
| 516 | exit $ERRORS{'UNKNOWN'}; | 498 | exit $ERRORS{'UNKNOWN'}; |
| 517 | } | 499 | } |
| 518 | 500 | ||
| 501 | if ( ! -x $utils::PATH_TO_MAILQ) { | ||
| 502 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 503 | exit $ERRORS{'UNKNOWN'}; | ||
| 504 | } | ||
| 505 | |||
| 506 | ## open mailq | ||
| 507 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { | ||
| 508 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; | ||
| 509 | exit $ERRORS{'UNKNOWN'}; | ||
| 510 | } | ||
| 511 | |||
| 519 | while (<MAILQ>) { | 512 | while (<MAILQ>) { |
| 520 | #22m 1.7K 19aEEr-0007hx-Dy <> *** frozen *** | 513 | #22m 1.7K 19aEEr-0007hx-Dy <> *** frozen *** |
| 521 | #root@exlixams.glups.fr | 514 | #root@exlixams.glups.fr |
| @@ -543,22 +536,22 @@ elsif ( $mailq eq "exim" ) { | |||
| 543 | } # end of ($mailq eq "exim") | 536 | } # end of ($mailq eq "exim") |
| 544 | 537 | ||
| 545 | elsif ( $mailq eq "nullmailer" ) { | 538 | elsif ( $mailq eq "nullmailer" ) { |
| 546 | ## open mailq | 539 | if( ! $utils::PATH_TO_MAILQ) { |
| 547 | if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { | ||
| 548 | if (! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { | ||
| 549 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; | ||
| 550 | exit $ERRORS{'UNKNOWN'}; | ||
| 551 | } | ||
| 552 | }elsif( defined $utils::PATH_TO_MAILQ){ | ||
| 553 | unless (-x $utils::PATH_TO_MAILQ) { | ||
| 554 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 555 | exit $ERRORS{'UNKNOWN'}; | ||
| 556 | } | ||
| 557 | } else { | ||
| 558 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; | 540 | print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; |
| 559 | exit $ERRORS{'UNKNOWN'}; | 541 | exit $ERRORS{'UNKNOWN'}; |
| 560 | } | 542 | } |
| 561 | 543 | ||
| 544 | if ( ! -x $utils::PATH_TO_MAILQ) { | ||
| 545 | print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; | ||
| 546 | exit $ERRORS{'UNKNOWN'}; | ||
| 547 | } | ||
| 548 | |||
| 549 | ## open mailq | ||
| 550 | if ( ! open (MAILQ, "$sudo $utils::PATH_TO_MAILQ | " ) ) { | ||
| 551 | print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; | ||
| 552 | exit $ERRORS{'UNKNOWN'}; | ||
| 553 | } | ||
| 554 | |||
| 562 | while (<MAILQ>) { | 555 | while (<MAILQ>) { |
| 563 | #2022-08-25 01:30:40 502 bytes from <user@example.com> | 556 | #2022-08-25 01:30:40 502 bytes from <user@example.com> |
| 564 | 557 | ||
