diff --git a/ConfBack/infos/views.py b/ConfBack/infos/views.py index c55bbd5..1bb5445 100644 --- a/ConfBack/infos/views.py +++ b/ConfBack/infos/views.py @@ -20,6 +20,7 @@ from flask_jwt_extended import jwt_required import json import platform +import psutil from werkzeug.exceptions import HTTPException @@ -62,6 +63,17 @@ def refresh_expiring_tokens(response): except (RuntimeError, KeyError): return response +def find_procs_by_name(name): + ''' Return a list of processes matching 'name'. + ''' + ls = [] + for p in psutil.process_iter(["name", "exe", "cmdline"]): + if name == p.info['name'] or \ + p.info['exe'] and os.path.basename(p.info['exe']) == name or \ + p.info['cmdline'] and p.info['cmdline'][0] == name: + ls.append(p) + return ls + @info.route('/infos', methods=['GET']) @jwt_required() def get_infos(): @@ -72,6 +84,8 @@ def get_infos(): # load data from JSON database with open(current_app.config['DB_PATH'], 'r') as f: data = json.load(f) + mem = psutil.virtual_memory() + disk = psutil.disk_usage('/') content['manufacturer'] = data['INFOS']['manufacturer'] content['operator'] = data['INFOS']['control']['operator'] content['provider'] = data['INFOS']['control']['service_provider'] @@ -82,6 +96,16 @@ def get_infos(): content['system'] = {'arch':platform.architecture()[0], 'machine':platform.machine(), 'version':platform.release(), - 'os':platform.system()} + 'os':platform.system(), + 'total_cpu':psutil.cpu_count(logical=True), + 'cpu_usage':str(psutil.cpu_percent()), + 'total_mem':str("{:.2f}".format(mem.total/(1024 * 1024))), + 'avail_mem':str("{:.2f}".format(mem.available/(1024 * 1024))), + 'used_mem':str("{:.2f}".format(mem.used/(1024 * 1024))), + 'percent_used_mem':str(mem.percent), + 'total_disk':str("{:.2f}".format(disk.total/(1024 * 1024))), + 'free_disk':str("{:.2f}".format(disk.free/(1024 * 1024))), + 'used_disk':str("{:.2f}".format(disk.used/(1024 * 1024))), + 'percent_used_disk':str(disk.percent)} return jsonify(content), status.HTTP_200_OK