diff --git a/app/services/agent_deploy_service.py b/app/services/agent_deploy_service.py index af952a8..34719b3 100644 --- a/app/services/agent_deploy_service.py +++ b/app/services/agent_deploy_service.py @@ -1,7 +1,7 @@ """Service de deploiement Qualys Cloud Agent via SSH""" import os +import re import logging -import glob from datetime import datetime log = logging.getLogger(__name__) @@ -15,18 +15,26 @@ except ImportError: PARAMIKO_OK = False +def _extract_version(filename): + """Extrait la version depuis le nom du fichier""" + m = re.search(r'(\d+\.\d+\.\d+[\.\-]\d+)', filename) + return m.group(1) if m else "inconnue" + + def list_packages(): """Liste les packages disponibles dans /opt/patchcenter/agents/""" packages = {"deb": [], "rpm": []} if not os.path.isdir(AGENTS_DIR): return packages - for f in sorted(os.listdir(AGENTS_DIR)): + for f in sorted(os.listdir(AGENTS_DIR), reverse=True): path = os.path.join(AGENTS_DIR, f) size_mb = round(os.path.getsize(path) / 1024 / 1024, 1) + version = _extract_version(f) + entry = {"name": f, "path": path, "size": size_mb, "version": version} if f.endswith(".deb"): - packages["deb"].append({"name": f, "path": path, "size": size_mb}) + packages["deb"].append(entry) elif f.endswith(".rpm"): - packages["rpm"].append({"name": f, "path": path, "size": size_mb}) + packages["rpm"].append(entry) return packages @@ -85,9 +93,12 @@ def check_agent(hostname, ssh_user, ssh_key_path, ssh_port=22): status = out.strip() result["service_status"] = status - # Get version - code, out, _ = _run_cmd(client, "qualys-cloud-agent --version 2>/dev/null || cat /etc/qualys/cloud-agent/qualys-cloud-agent.conf 2>/dev/null | grep -i version | head -1") - result["version"] = out.strip()[:50] + # Get version via package manager + code, out, _ = _run_cmd(client, "rpm -q qualys-cloud-agent 2>/dev/null || dpkg -l qualys-cloud-agent 2>/dev/null | grep '^ii' | awk '{print $3}'") + version = out.strip() + # Extract just version number + m = re.search(r'(\d+\.\d+\.\d+[\.\-]\d+)', version) + result["version"] = m.group(1) if m else version[:50] # Get last checkin from log code, out, _ = _run_cmd(client, "tail -5 /var/log/qualys/qualys-cloud-agent.log 2>/dev/null | grep 'HTTP response code: 200' | tail -1 | awk '{print $1, $2}'") diff --git a/app/templates/qualys_deploy.html b/app/templates/qualys_deploy.html index cb6708c..b684aac 100644 --- a/app/templates/qualys_deploy.html +++ b/app/templates/qualys_deploy.html @@ -39,7 +39,7 @@ @@ -48,7 +48,7 @@ @@ -61,12 +61,12 @@