feat(os): show full version number from /etc/debian_version
All checks were successful
Build and Release .deb / build-deb (push) Successful in 22s
All checks were successful
Build and Release .deb / build-deb (push) Successful in 22s
- Use lsb_release -is/-cs for name and codename - Use /etc/debian_version for full version (e.g. 12.9) - Display format: 'Debian GNU/Linux 12.9 (bookworm)'
This commit is contained in:
parent
6e707da98d
commit
2d339cc397
1 changed files with 33 additions and 19 deletions
|
|
@ -137,26 +137,40 @@ def lxc_is_running(vmid: str) -> bool:
|
|||
|
||||
|
||||
def scan_os(target: Target) -> str:
|
||||
"""Récupère le nom et la version de l'OS."""
|
||||
if target.is_host:
|
||||
cmd = ["lsb_release", "-ds"]
|
||||
else:
|
||||
cmd = ["pct", "exec", target.target_id, "--", "lsb_release", "-ds"]
|
||||
ok, stdout, _ = run_cmd(cmd, timeout=30)
|
||||
"""Récupère le nom, la version complète et le codename de l'OS."""
|
||||
prefix = [] if target.is_host else ["pct", "exec", target.target_id, "--"]
|
||||
|
||||
# 1. Récupérer le nom (Debian, Ubuntu...)
|
||||
ok, name_out, _ = run_cmd(prefix + ["lsb_release", "-is"], timeout=30)
|
||||
os_name = name_out.strip() if ok else ""
|
||||
|
||||
# 2. Récupérer le codename (bookworm, trixie...)
|
||||
ok, code_out, _ = run_cmd(prefix + ["lsb_release", "-cs"], timeout=30)
|
||||
codename = code_out.strip() if ok else ""
|
||||
|
||||
# 3. Récupérer la version complète depuis /etc/debian_version (ex: 12.9)
|
||||
ok, ver_out, _ = run_cmd(prefix + ["cat", "/etc/debian_version"], timeout=30)
|
||||
version = ver_out.strip() if ok else ""
|
||||
|
||||
# 4. Fallback sur lsb_release -rs si /etc/debian_version vide
|
||||
if not version:
|
||||
ok, ver_out, _ = run_cmd(prefix + ["lsb_release", "-rs"], timeout=30)
|
||||
version = ver_out.strip() if ok else ""
|
||||
|
||||
# 5. Fallback sur /etc/os-release si tout le reste échoue
|
||||
if not os_name or not version:
|
||||
ok, osrel_out, _ = run_cmd(prefix + ["cat", "/etc/os-release"], timeout=30)
|
||||
if ok:
|
||||
return stdout.strip()
|
||||
# Fallback si lsb_release n'est pas installé
|
||||
if target.is_host:
|
||||
cmd = ["cat", "/etc/os-release"]
|
||||
else:
|
||||
cmd = ["pct", "exec", target.target_id, "--", "cat", "/etc/os-release"]
|
||||
ok, stdout, _ = run_cmd(cmd, timeout=30)
|
||||
if ok:
|
||||
name = re.search(r'PRETTY_NAME="([^"]+)"', stdout)
|
||||
if name:
|
||||
return name.group(1)
|
||||
pretty = re.search(r'PRETTY_NAME="([^"]+)"', osrel_out)
|
||||
if pretty:
|
||||
return pretty.group(1)
|
||||
return "OS inconnu"
|
||||
|
||||
# Construire le libellé final
|
||||
if codename:
|
||||
return f"{os_name} GNU/Linux {version} ({codename})"
|
||||
return f"{os_name} GNU/Linux {version}"
|
||||
|
||||
|
||||
def ensure_debsecan_installed(is_host: bool, vmid: str = "") -> tuple[bool, str]:
|
||||
if is_host:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue