detecter_usb : 2 niveaux /media/<user>/<label> + filtre fstype

This commit is contained in:
2026-06-04 13:53:05 +02:00
parent c013c9e69e
commit 3cd5525981

View File

@@ -163,14 +163,43 @@ def recuperer_booth_password() -> dict:
def detecter_usb() -> list[str]: def detecter_usb() -> list[str]:
"""Detecte les cles USB montees.""" """Detecte les cles USB montees (cherche dans /media, /mnt et /media/<user>/)."""
chemins_possibles = [Path("/media"), Path("/mnt")]
usb_trouvees = [] usb_trouvees = []
for racine in chemins_possibles: candidats = []
if racine.exists():
for sous_dossier in racine.iterdir(): for racine in [Path("/media"), Path("/mnt")]:
if sous_dossier.is_mount() or (sous_dossier.is_dir() and any(sous_dossier.iterdir())): if not racine.exists():
usb_trouvees.append(str(sous_dossier)) continue
try:
for niveau1 in racine.iterdir():
if not niveau1.is_dir():
continue
if niveau1.is_mount():
candidats.append(niveau1)
else:
# /media/<user>/ → descendre encore (udiskie)
try:
for niveau2 in niveau1.iterdir():
if niveau2.is_dir() and niveau2.is_mount():
candidats.append(niveau2)
except PermissionError:
pass
except PermissionError:
pass
for chemin in candidats:
# Exclure les partitions système
try:
result = __import__("subprocess").run(
["findmnt", "-no", "FSTYPE", str(chemin)],
capture_output=True, text=True, timeout=3
)
fstype = result.stdout.strip()
if fstype in ("vfat", "exfat", "ntfs", "ext4", "ext3", "hfsplus"):
usb_trouvees.append(str(chemin))
except Exception:
usb_trouvees.append(str(chemin))
return usb_trouvees return usb_trouvees