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 @@