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