diff options
Diffstat (limited to 'app/monitoring/checks')
-rwxr-xr-x | app/monitoring/checks/check_pnic_ovs.py (renamed from app/monitoring/checks/check_interface.py) | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/app/monitoring/checks/check_interface.py b/app/monitoring/checks/check_pnic_ovs.py index 4140dfe..c26e42f 100755 --- a/app/monitoring/checks/check_interface.py +++ b/app/monitoring/checks/check_pnic_ovs.py @@ -9,13 +9,17 @@ # http://www.apache.org/licenses/LICENSE-2.0 # ############################################################################### -import re import sys import subprocess from binary_converter import binary2str +def nic_not_found(name: str, output: str): + print("Error finding NIC {}{}{}\n".format(name, ': ' if output else '', + output)) + return 2 + if len(sys.argv) < 2: print('name of interface must be specified') exit(2) @@ -24,27 +28,18 @@ nic_name = str(sys.argv[1]) rc = 0 try: - out = subprocess.check_output(["ifconfig " + nic_name], - stderr=subprocess.STDOUT, - shell=True) + cmd = 'ip link show | grep -A1 "^[0-9]\+: {}:"'.format(nic_name) + out = subprocess.check_output([cmd], stderr=subprocess.STDOUT, shell=True) out = binary2str(out) lines = out.splitlines() - line_number = 1 - line = -1 - while line_number < len(lines): - line = lines[line_number] - if ' BROADCAST ' in line: - break - line_number += 1 - state_match = re.match('^\W+([A-Z]+)', line) - if not state_match: - rc = 2 - print('Error: failed to find status in ifconfig output: ' + out) + if not lines: + rc = nic_not_found(nic_name, '') else: - rc = 0 if state_match.group(1) == 'UP' else 2 + line = lines[0] + if ' state UP ' not in line: + rc = 2 print(out) except subprocess.CalledProcessError as e: - print("Error finding NIC {}: {}\n".format(nic_name, binary2str(e.output))) - rc = 2 + rc = nic_not_found(nic_name, binary2str(e.output)) exit(rc) |