ui(qualys/agents): bloc Etat checklist OK/KO en tete (connectivite/disque/service/install) + log systeme 10 lignes

This commit is contained in:
Pierre & Lumière 2026-04-28 01:24:57 +02:00
parent 7f8c2c710b
commit 67bd3a02d6
2 changed files with 44 additions and 3 deletions

View File

@ -941,8 +941,38 @@ def audit_qualys_agent_only(hostname):
# Analyser les sorties pour suggerer des resolutions
if result["status"] == "OK":
result["suggestions"] = _analyze_qualys_audit(result)
# Resume binaire pour la checklist en tete de page
s_conn = (result.get("qualys_connectivity") or "")
s_disk = (result.get("disk_space") or "")
s_status = (result.get("agent_status") or "").lower()
s_ver = (result.get("agent_version") or "")
s_sys = (result.get("system_log") or "")
result["check_connectivity"] = "Connectivité OK" in s_conn
result["check_disk"] = " 100%" not in s_disk
result["check_service"] = "active (running)" in s_status or \
("running" in s_status and "active" in s_status)
result["check_installed"] = bool(re.search(r"qualys-cloud-agent[-\s]\d", s_ver))
# Ligne saturee si disque KO
result["disk_saturated_line"] = ""
if not result["check_disk"]:
for ln in s_disk.split("\n"):
if " 100%" in ln:
result["disk_saturated_line"] = ln.strip()
break
# Garder seulement les 10 dernieres lignes du log systeme
sys_lines = [l for l in s_sys.split("\n") if l.strip()]
result["system_log"] = "\n".join(sys_lines[-10:])
else:
result["suggestions"] = []
result["check_connectivity"] = False
result["check_disk"] = False
result["check_service"] = False
result["check_installed"] = False
result["disk_saturated_line"] = ""
return result

View File

@ -60,6 +60,17 @@
{% if audit.status == 'OK' %}
<!-- État (checklist binaire) -->
<div class="card p-4 mb-4">
<h3 class="text-sm font-bold text-cyber-accent mb-3">État</h3>
<table class="w-full text-xs">
<tr><td class="p-1">Connectivité Qualys</td><td class="p-1 text-right">{% if audit.check_connectivity %}<span class="text-cyber-green font-bold">✓ OK</span>{% else %}<span class="text-cyber-red font-bold">✗ KO</span>{% endif %}</td></tr>
<tr><td class="p-1">Espace disque</td><td class="p-1 text-right">{% if audit.check_disk %}<span class="text-cyber-green font-bold">✓ OK</span>{% else %}<span class="text-cyber-red font-bold">✗ KO</span> <span class="text-gray-400 ml-2">{{ audit.disk_saturated_line }}</span>{% endif %}</td></tr>
<tr><td class="p-1">Service Qualys</td><td class="p-1 text-right">{% if audit.check_service %}<span class="text-cyber-green font-bold">✓ OK</span>{% else %}<span class="text-cyber-red font-bold">✗ KO</span>{% endif %}</td></tr>
<tr><td class="p-1">Agent installé</td><td class="p-1 text-right">{% if audit.check_installed %}<span class="text-cyber-green font-bold">✓ OK</span>{% else %}<span class="text-cyber-red font-bold">✗ KO</span>{% endif %}</td></tr>
</table>
</div>
{% if audit.suggestions %}
<!-- Diagnostic -->
<div class="card p-4 mb-4" style="border:1px solid #00ffc8;background:rgba(0,255,200,0.05)">
@ -153,10 +164,10 @@
<pre style="background:#0b0f1a;color:#e5e7eb;padding:10px;border-radius:4px;font-size:11px;overflow-x:auto;max-height:400px;white-space:pre-wrap">{{ audit.agent_log or '(vide)' }}</pre>
</div>
<!-- Log système -->
<!-- Log système (10 dernières lignes) -->
<div class="card p-4 mb-4">
<h3 class="text-sm font-bold text-cyber-accent mb-2">Log système (journalctl / messages)</h3>
<pre style="background:#0b0f1a;color:#e5e7eb;padding:10px;border-radius:4px;font-size:11px;overflow-x:auto;max-height:400px;white-space:pre-wrap">{{ audit.system_log or '(vide)' }}</pre>
<h3 class="text-sm font-bold text-cyber-accent mb-2">Log système (10 dernières lignes)</h3>
<pre style="background:#0b0f1a;color:#e5e7eb;padding:10px;border-radius:4px;font-size:11px;overflow-x:auto;white-space:pre-wrap">{{ audit.system_log or '(vide)' }}</pre>
</div>
{% else %}