probe: add basic os family detection

Add a basic OS family enumeration: OSFamily.

Add utility function that probes for an installed Linux or Windows
system, returns the corresponding enum value, OSFamily.UNKNOWN
otherwise.
master
Jose M. Guisado 2023-08-16 13:56:14 +02:00 committed by Alejandro Sirgo Rica
parent bb3264d8f4
commit e3c375f8d7
1 changed files with 16 additions and 0 deletions

View File

@ -10,10 +10,13 @@ import os
import subprocess
import platform
from enum import Enum
from subprocess import PIPE
from src.utils.fs import find_mountpoint
OSFamily = Enum('OSFamily', ['LINUX', 'WINDOWS', 'UNKNOWN'])
def getlinuxversion(osrelease):
"""
Parses a os-release file to fetch 'PRETTY_NAME' key.
@ -115,6 +118,19 @@ def cache_probe():
stdout = proc_blkid.stdout.decode().strip()
return stdout
def get_os_family(mountpoint):
winreghives = f'{mountpoint}/Windows/System32/'
osrelease = f'{mountpoint}/etc/os-release'
if os.path.exists(osrelease):
return OSFamily.LINUX
elif os.path.exists(winreghives):
return OSFamily.WINDOWS
else:
return OSFamily.UNKNOWN
def os_probe(mountpoint):
"""
Probes mountpoint for typical OS dependant files.