Lancer la commande mount via popen

Fermé
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - Modifié le 16 févr. 2023 à 13:55
mamiemando Messages postés 33344 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 novembre 2024 - 16 févr. 2023 à 13:55

Bonjour,

Je suis sur python 3.8.10 et j’essaie de faire un retour du shell avec plusieurs arguments, en vain.

Les importations

import tkinter as tk, os
import subprocess

La commande shell à exécuter

CMD = "pkexec mount -t vfat /dev/sdg4 /media/laurent/ZP100"

Essai

retour = os.popen(CMD).read()
print ("retour : ", retour)

Le retour est vide sauf dans le terminal

mount: /media/laurent/ZP-100: le périphérique spécial /dev/sdg4 n'existe pas.
retour :

j'en ai fait d'autre avec subprocess, Mais avec Popen je n'arrive pas à avoir un retour dans la variable retour .

Merci d'avance pour vos avis et conseils.
Linux / Firefox 109.0

A voir également:

8 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 12 févr. 2023 à 10:39

Bonjour,

C'est une commande pour monter un périphérique, peut-être qu'il n'y a pas de valeur

de retour, la commande s'exécute et l'action se fait ou pas

 Dans ton post du 24 janvier, je t'avais expliqué cette méthode que tu utilise ici, mais pour un autre

type de commande

Par exemple, moi je récupère le no de série de mon pc comme ceci:

s_nb = os.popen('wmic bios get serialnumber').read()

car il y a bien une valeur à récupérer (le no de série)

mais dans ton cas, peut-être que ceci suffit:

ret = os.system(CMD)

pour avoir un statut de retour de la commande (erreur ou succès)

Au fait, ce n'est pas en vingt mais en vain :-)

0
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
Modifié le 12 févr. 2023 à 12:40

Bonjour,

j'ai fait

retour = os.popen(CMD).read()
print ("retour : ", retour)

et vous vous me dites :

s_nb = os.popen('wmic bios get serialnumber').read()

c'est pareil, et d'essayer avec

ret = os.system(CMD)

1er essai avec :

retour = os.system(CMD)
print ("retour : ", retour)
text_box.insert(tk.END, retour)

j'ai dans la console :

mount: /media/laurent/ZIP-100: le point de montage n'existe pas.
retour :  8192

et dans la listbox

8192

2em test avec :

retour = os.popen(CMD).read()
print ("retour : ", retour)
text_box.insert(tk.END, retour)

en console il n'y a aucun retour avec la variable retour alors qu'il y un un message dans la console

mount: /media/laurent/ZIP-100: le point de montage n'existe pas.
retour : 

La listbox est vide

Il me faut un retour pour l'utilisateur, je n'arrive pas a trouver la soluce pour avoir en retour :

mount: /media/laurent/ZIP-100: le point de montage n'existe pas.

PS : Pour le message du 24/01 je n'ai pas reçus l'email de réponse ?

Merci.

0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
12 févr. 2023 à 17:31

Et si tu essaie ceci:

import sys

try:
	os.system(CMD)
except:
	print(sys.exc_info()[1])
0
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
12 févr. 2023 à 20:51

Bonsoir,

avec

import sys

try:
    retour = os.system(CMD)
except:
    print("sys.exc_info()[1] : ",sys.exc_info()[1])
 
    
print ("retour : ", retour)
text_box.insert(tk.END, retour) 
   

j'ai dans le terminal

mount: /media/laurent/ZIP-100: le point de montage n'existe pas.
retour :  8192

est dans la listbox

8192

Merci.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 13 févr. 2023 à 09:10

Bonjour,

Ok, mais sans les lignes 9 et 10, juste ceci, ça donne quoi ? :

import sys

try:
    os.system(CMD)
except:
    text_box.insert(tk.END, sys.exc_info()[1]) 
0
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
Modifié le 13 févr. 2023 à 09:29

Bonjour,

Idem, j'ai dans le terminal

mount: /media/laurent/ZIP-100: le point de montage n'existe pas.

est la listbox est vide.

Merci.

0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
13 févr. 2023 à 13:33

bizarre que try/except ne "catche" pas l'erreur ...

0
mamiemando Messages postés 33344 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 novembre 2024 7 803
16 févr. 2023 à 13:55

Bonjour,

Si le point de montage n'existe pas il faut le créer au préalable, soit en shell :

sudo mkdir -p /media/laurent/ZIP-100

... soit avec os.mkdir.

Bonne chance

0