diff --git a/app/services/realtime_audit_service.py b/app/services/realtime_audit_service.py index bcb828e..cc00a82 100644 --- a/app/services/realtime_audit_service.py +++ b/app/services/realtime_audit_service.py @@ -562,10 +562,47 @@ def save_audit_to_db(db, results): # =========================================================================== QUALYS_AGENT_CMDS = { - "agent_status": "systemctl status qualys-cloud-agent --no-pager 2>&1 | head -25 || /etc/init.d/qualys-cloud-agent status 2>&1 | head -25", - "agent_log": "tail -50 /var/log/qualys/qualys-cloud-agent.log 2>/dev/null || tail -50 /var/log/qualys-cloud-agent.log 2>/dev/null || echo \"log Qualys introuvable (chemins testes: /var/log/qualys/*, /var/log/qualys-cloud-agent.log)\"", - "system_log": "journalctl -u qualys-cloud-agent --no-pager -n 50 2>/dev/null || tail -50 /var/log/messages 2>/dev/null | grep -i qualys || echo \"journalctl + /var/log/messages indisponibles\"", - "agent_version": "/usr/local/qualys/cloud-agent/bin/qualys-cloud-agent.sh -v 2>&1 || rpm -q qualys-cloud-agent 2>/dev/null || echo \"version introuvable\"", + "os_release": "cat /etc/redhat-release 2>/dev/null || (grep '^PRETTY_NAME=' /etc/os-release 2>/dev/null | cut -d'\"' -f2) || uname -sr", + "agent_status": ( + "if command -v systemctl >/dev/null 2>&1; then " + " systemctl status qualys-cloud-agent --no-pager 2>&1 | head -25; " + "elif [ -x /etc/init.d/qualys-cloud-agent ]; then " + " /etc/init.d/qualys-cloud-agent status 2>&1 | head -25; " + "elif command -v service >/dev/null 2>&1; then " + " service qualys-cloud-agent status 2>&1 | head -25; " + "else " + " echo '--- ps (init system inconnu) ---'; " + " ps -ef 2>/dev/null | grep -i qualys-cloud-agent | grep -v grep | head -5 || echo 'aucun process Qualys'; " + "fi" + ), + "agent_version": ( + "(rpm -q qualys-cloud-agent 2>/dev/null) || " + "(dpkg -l qualys-cloud-agent 2>/dev/null | awk '/^ii/{print $2,$3}') || " + "(/usr/local/qualys/cloud-agent/bin/qualys-cloud-agent.sh -v 2>&1) || " + "echo 'version introuvable'" + ), + "agent_log": ( + "for f in /var/log/qualys/qualys-cloud-agent.log " + "/var/log/qualys-cloud-agent/qualys-cloud-agent.log " + "/usr/local/qualys/cloud-agent/log/qualys-cloud-agent.log " + "/var/log/qualysagent/qualysagent.log; do " + " if [ -r \"$f\" ]; then echo \"=== $f ===\"; tail -50 \"$f\"; exit 0; fi; " + "done; " + "echo 'log Qualys introuvable. Chemins testes: /var/log/qualys/*, /var/log/qualys-cloud-agent/*, /usr/local/qualys/cloud-agent/log/*, /var/log/qualysagent/*'" + ), + "system_log": ( + "if command -v journalctl >/dev/null 2>&1; then " + " journalctl -u qualys-cloud-agent --no-pager -n 50 2>/dev/null || echo '(journalctl: aucune entree)'; " + "elif [ -r /var/log/messages ]; then " + " echo '--- /var/log/messages (filtre qualys, 50 derniers) ---'; " + " grep -i qualys /var/log/messages 2>/dev/null | tail -50 || echo 'aucune entree qualys'; " + "elif [ -r /var/log/syslog ]; then " + " echo '--- /var/log/syslog (filtre qualys, 50 derniers) ---'; " + " grep -i qualys /var/log/syslog 2>/dev/null | tail -50 || echo 'aucune entree qualys'; " + "else " + " echo 'logs systeme indisponibles (journalctl absent, messages/syslog non lisibles - sudo requis ?)'; " + "fi" + ), } diff --git a/app/templates/qualys_agent_audit.html b/app/templates/qualys_agent_audit.html index d469f95..c3303c1 100644 --- a/app/templates/qualys_agent_audit.html +++ b/app/templates/qualys_agent_audit.html @@ -32,6 +32,12 @@ {% if audit.status == 'OK' %} + +
+

OS détecté

+
{{ audit.os_release or '(vide)' }}
+
+

État du service qualys-cloud-agent