From 666e9d972d3ea61e491137e2264dde28b8173027 Mon Sep 17 00:00:00 2001 From: "Markus F.J. Busche" Date: Sun, 26 Nov 2023 11:05:00 +0100 Subject: [PATCH] =?UTF-8?q?Pr=C3=BCflauf=20parametrisiert=20in=20Funktion?= =?UTF-8?q?=20verlagert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 54 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/app.py b/app.py index 35b2648..7cdd115 100644 --- a/app.py +++ b/app.py @@ -3,24 +3,50 @@ from subprocess import check_output app = Flask(__name__) -# http://192.168.177.48:5000/check-qnap-disk-state?ip=192.168.177.61&oid=.1.3.6.1.4.1.24681.1.2.11.1.7 -@app.route('/check-qnap-disk-state') -def snmpcheck(): +# http://192.168.177.48:5000/check-qnap-disk-smart?ip=192.168.177.61 +@app.route('/check-qnap-disk-smart') +def snmp_disk_smart_status(): # Die Parameter aus der URL abrufen Ip = request.args.get('ip') - Oid = request.args.get('oid') + Oid = '.1.3.6.1.4.1.24681.1.2.11.1.7' + result = startsnmpwalk(Ip, Oid, 'good') + return result - process = check_output(['/usr/bin/snmpwalk', '-v', '1', '-c', 'public', Ip, Oid]) - decoded_string = process.decode('utf-8') - healthy = True - statuscode = 200 - for line in decoded_string.splitlines(): - print(line) - if not 'good' in line.lower(): - healthy = False - statuscode = 418 +# http://192.168.177.48:5000/check-qnap-status?ip=192.168.177.61 +@app.route('/check-qnap-status') +def snmp_disk_status(): + # Die Parameter aus der URL abrufen + Ip = request.args.get('ip') + Oid = '.1.3.6.1.4.1.24681.1.2.11.1.4' + result = startsnmpwalk(Ip, Oid, 'integer: 0') + return result - return f'SNMP result for IP {Ip}\nHealthy: {healthy}\n', statuscode +# http://192.168.177.48:5000/check-volume-status?ip=192.168.177.61 +@app.route('/check-volume-status') +def snmp_volume_status(): + # Die Parameter aus der URL abrufen + Ip = request.args.get('ip') + Oid = '.1.3.6.1.4.1.24681.1.2.17.1.6.1' + result = startsnmpwalk(Ip, Oid, 'ready') + return result + +def startsnmpwalk(ip, oid, expectedtext): + try: + process = check_output(['/usr/bin/snmpwalk', '-v', '1', '-c', 'public', ip, oid]) + decoded_string = process.decode('utf-8') + healthy = True + statuscode = 200 + for line in decoded_string.splitlines(): + if not expectedtext.lower() in line.lower(): + healthy = False + statuscode = 418 + except: + statuscode = 400 + healthy = False + decoded_string = "snmpwalk failed" + + return f'SNMP result for IP {ip}\nOID: {oid}\nSNMP-Output: {decoded_string}\nHealthy: {healthy}\n', statuscode + if __name__ == '__main__': app.run(debug=True, host='192.168.177.48') \ No newline at end of file