feat(qualys/agents): colonne Version OS dans table sans-agent
This commit is contained in:
parent
c57ef61adb
commit
3c00f05263
@ -511,7 +511,7 @@ def qualys_agents_page(request: Request, db=Depends(get_db)):
|
||||
# Serveurs sans agent Qualys (match via server_id pour gerer alias/IP)
|
||||
# Exclut les workstations Win10/11 = portables/postes dev
|
||||
no_agent_rows = db.execute(text("""
|
||||
SELECT s.hostname, s.os_family, s.etat, d.name as domain, e.name as env, z.name as zone
|
||||
SELECT s.hostname, s.os_family, s.os_version, s.etat, d.name as domain, e.name as env, z.name as zone
|
||||
FROM servers s
|
||||
LEFT JOIN domain_environments de ON s.domain_env_id = de.id
|
||||
LEFT JOIN domains d ON de.domain_id = d.id
|
||||
@ -528,7 +528,7 @@ def qualys_agents_page(request: Request, db=Depends(get_db)):
|
||||
AND COALESCE(s.os_version, '') NOT ILIKE '%Workstation%'
|
||||
ORDER BY s.hostname
|
||||
""")).fetchall()
|
||||
no_agent = [{"hostname": r.hostname, "os_family": r.os_family, "etat": r.etat,
|
||||
no_agent = [{"hostname": r.hostname, "os_family": r.os_family, "os_version": r.os_version or "", "etat": r.etat,
|
||||
"domain": r.domain or "", "env": r.env or "", "zone": r.zone or ""} for r in no_agent_rows]
|
||||
|
||||
# Agents inactifs
|
||||
@ -603,7 +603,7 @@ async def export_no_agent_csv(request: Request, db=Depends(get_db)):
|
||||
return RedirectResponse(url="/qualys/agents")
|
||||
import io, csv as _csv
|
||||
rows = db.execute(text("""
|
||||
SELECT s.hostname, s.os_family, s.etat, d.name as domain, e.name as env, z.name as zone
|
||||
SELECT s.hostname, s.os_family, s.os_version, s.etat, d.name as domain, e.name as env, z.name as zone
|
||||
FROM servers s
|
||||
LEFT JOIN domain_environments de ON s.domain_env_id = de.id
|
||||
LEFT JOIN domains d ON de.domain_id = d.id
|
||||
@ -616,7 +616,7 @@ async def export_no_agent_csv(request: Request, db=Depends(get_db)):
|
||||
w = _csv.writer(output, delimiter=";")
|
||||
w.writerow(["Hostname", "OS", "Domaine", "Environnement", "Zone", "Etat"])
|
||||
for r in rows:
|
||||
w.writerow([r.hostname, r.os_family or "", r.domain or "", r.env or "", r.zone or "", r.etat or ""])
|
||||
w.writerow([r.hostname, r.os_family or "", r.os_version or "", r.domain or "", r.env or "", r.zone or "", r.etat or ""])
|
||||
output.seek(0)
|
||||
return StreamingResponse(
|
||||
iter(["\ufeff" + output.getvalue()]),
|
||||
|
||||
@ -215,6 +215,7 @@ function refreshAgents(mode) {
|
||||
<thead><tr>
|
||||
<th class="text-left p-2">Hostname</th>
|
||||
<th class="p-2">OS</th>
|
||||
<th class="p-2">Version OS</th>
|
||||
<th class="p-2">Domaine</th>
|
||||
<th class="p-2">Env</th>
|
||||
<th class="p-2">Zone</th>
|
||||
@ -231,6 +232,7 @@ function refreshAgents(mode) {
|
||||
">
|
||||
<td class="p-2 font-mono text-cyber-accent">{{ s.hostname }}</td>
|
||||
<td class="p-2 text-center">{{ s.os_family or '-' }}</td>
|
||||
<td class="p-2 text-center text-xs text-gray-300">{{ s.os_version or '-' }}</td>
|
||||
<td class="p-2 text-center text-gray-400">{{ s.domain or '-' }}</td>
|
||||
<td class="p-2 text-center">{{ s.env or '-' }}</td>
|
||||
<td class="p-2 text-center">{% if s.zone == 'DMZ' %}<span class="badge badge-red">DMZ</span>{% else %}{{ s.zone or '-' }}{% endif %}</td>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user