[monitoring-plugins] Fix check_dhcp tests

Jacob Hansen git at monitoring-plugins.org
Fri Apr 30 11:20:10 CEST 2021


    Module: monitoring-plugins
    Branch: feature_github_actions
    Commit: 39c162e594ec962eb338332624d3ac7474227a2b
    Author: Aksel Sjögren <asjogren at itrsgroup.com>
 Committer: Jacob Hansen <jhansen at op5.com>
      Date: Thu Apr 29 15:58:50 2021 +0200
       URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=39c162e

Fix check_dhcp tests

* try to use "/usr/sbin/ip" before "ifconfig" since the latter is
  obsolete on Linux to figure out interface to listen for DHCP messages.
  But keeping ifconfig method just in case.
  Without this, tests fail on boxes without ifconfig AND the correct
  interface named ethX.

* amend possible failure responses, as check_dhcp might get a DHCPOFFER,
  but from an unexpected address - which happens if the box running
  tests are on a network with a DHCP server.

---

 plugins-root/t/check_dhcp.t | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/plugins-root/t/check_dhcp.t b/plugins-root/t/check_dhcp.t
index 222f454..ce62773 100644
--- a/plugins-root/t/check_dhcp.t
+++ b/plugins-root/t/check_dhcp.t
@@ -19,7 +19,7 @@ if ($allow_sudo eq "yes" or $> == 0) {
 my $sudo = $> == 0 ? '' : 'sudo';
 
 my $successOutput = '/OK: Received \d+ DHCPOFFER\(s\), \d+ of 1 requested servers responded, max lease time = \d+ sec\./';
-my $failureOutput = '/CRITICAL: No DHCPOFFERs were received/';
+my $failureOutput = '/CRITICAL: (No DHCPOFFERs were received|Received \d+ DHCPOFFER\(s\), 0 of 1 requested servers responded, max lease time = \d+ sec\.)/';
 my $invalidOutput = '/Invalid hostname/';
 
 my $host_responsive    = getTestParameter( "NP_HOST_DHCP_RESPONSIVE",
@@ -36,7 +36,12 @@ my $hostname_invalid   = getTestParameter( "NP_HOSTNAME_INVALID",
 
 # try to determince interface
 my $interface = '';
-if(`ifconfig -a 2>/dev/null` =~ m/^(e\w*\d+)/mx and $1 ne 'eth0') {
+
+# find interface used for default route
+if (-x '/usr/sbin/ip' and `/usr/sbin/ip route get 1.1.1.1 2>/dev/null` =~ m/\sdev\s(\S+)/) {
+    $interface = "-i $1";
+}
+elsif (`ifconfig -a 2>/dev/null` =~ m/^(e\w*\d+)/mx and $1 ne 'eth0') {
     $interface = ' -i '.$1;
 }
 



More information about the Commits mailing list