Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/02/2022, à 01:21

karses

[Résolu] Python : commande shell ne prend pas les redirections

Bonjour,

J'ai besoin de passer une paire de commandes en sudo. J'utilise os.system('sudo commande') assorti de la redirection pour envoyer le mdp en automatique.

J'ai essayé les 3 méthodes :

echo 'mdp'|sudo  -> il demande le mot de passe en ligne de commande
sudo cmd <<mdp_dans_un_fichier  --> il m'envoie une erreur de redirection
sudo cmd <<<'mdp'  --> il demande le mot de passe dans le terminal

Rien ne passe.

J'utilise python 3.6 sur la dernière version d'ubuntu.
Je suis connecté sur la machine en ssh

Karses

Dernière modification par karses (Le 04/02/2022, à 15:46)


Fonctionnement en dual boot depuis la 7.04 et full Ubuntu depuis la 9.04
Tous les PCs de la maison sont sous Ubuntu (portables et fixes)
Plus raspberry Pi sous raspbian
Cubox sous 14.04 FR (sarge)

Hors ligne

#2 Le 02/02/2022, à 04:43

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

Bonjour

Si une ou plusieurs commandes contenues dans ton script ont besoin des privilèges du compte root
il sera plus simple d'utiliser sudo pour lancer ton script.

Dernière modification par MicP (Le 02/02/2022, à 06:14)

Hors ligne

#3 Le 02/02/2022, à 09:31

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

Bonjour,
Voici une solution avec subprocess:

>>> import subprocess
>>> proc = subprocess.Popen(['sudo', '-S', 'touch', 'testbidon.root'], stdin=subprocess.PIPE).communicate(input=mon_mot_de_passe\n')

Ce qui donne:

~ jt'écoute :ls -l testbidon.root 
-rw-r--r-- 1 root root 0 févr.  2 08:07 testbidon.root
~ jt'écoute :

Ceci étant dit, ce n'est vraiment pas une bonne pratique de mettre un mdp en clair dans un programme. C'est un peu comme laisser trainer sa carte bleu avec son code écrit en toute lettre roll

note: ma réponse fait abstraction sur le fait que tu utilises ssh (je n'ai aucune connaissance sur le sujet)

Dernière modification par Compte supprimé (Le 02/02/2022, à 09:34)

#4 Le 02/02/2022, à 10:21

karses

Re : [Résolu] Python : commande shell ne prend pas les redirections

Merci pour vos réponses.
Le poste est dans un réseau privé interne non accessible de l'extérieur. Seuls les administrateurs y ont accès et ils connaissent déjà le mot de passe en question.

Ceci dit, je vais l'encrypter, le mettre dans une variable et le décrypter dans le programme. Je devrais trouver un utilitaire pour ça sans trop de problèmes.

Je teste la solution avec subprocess et reviens vers vous.

Je ne souhaite pas démarrer tout le script en droits d'admin, ça reste trop dangereux^^

Karses


Fonctionnement en dual boot depuis la 7.04 et full Ubuntu depuis la 9.04
Tous les PCs de la maison sont sous Ubuntu (portables et fixes)
Plus raspberry Pi sous raspbian
Cubox sous 14.04 FR (sarge)

Hors ligne

#5 Le 02/02/2022, à 10:35

Nuliel

Re : [Résolu] Python : commande shell ne prend pas les redirections

Bonjour,
Chiffrer (et pas encrypter) le mot de passe n'est pas non plus une bonne solution: ton programme connaît le chiffré et la clé, donc il suffit de réussir à lire le fichier pour retrouver le mot de passe et avoir les droits admin...
Quelle est la commande en question et le but de cette commande? Il est peut-être possible qu'on puisse faire sans les droits root.
À noter qu'on peut aussi jouer sur les droits du programme pour restreindre l'accès uniquement à ceux qui en ont besoin.

Hors ligne

#6 Le 02/02/2022, à 10:40

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

+1 wink

#7 Le 02/02/2022, à 11:03

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

Petite précision sur ma proposition,
Si la commande shell est censée retourner quelque chose alors il te faut aussi définir stdout.
Idem pour stderr...

#8 Le 02/02/2022, à 17:30

karses

Re : [Résolu] Python : commande shell ne prend pas les redirections

Je monte et démonte des fichiers iso pour aller chercher leur contenu et récupérer les données dont j'ai besoin pour la suite du traitement.

donc je le fais avec mount et umount, ce qui me permet de mettre à jour le contenu de l'iso (traces et résultat du traitement) et récupérer les fichiers dont j'ai besoin.

Ce traitement est exécuté à l'apparition des fichiers iso dans un dossier connu, ils sont ensuite déplacés après traitement. Le tout se fait automatiquement quand les fichiers apparaissent, donc il n'y a personne devant le clavier, la machine n'en a pas, ni d'écran.

Si cela peut être fait autrement, je suis preneur.

Karses


Fonctionnement en dual boot depuis la 7.04 et full Ubuntu depuis la 9.04
Tous les PCs de la maison sont sous Ubuntu (portables et fixes)
Plus raspberry Pi sous raspbian
Cubox sous 14.04 FR (sarge)

Hors ligne

#9 Le 02/02/2022, à 18:15

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

Bonjour

…  Je monte et démonte des fichiers iso pour aller chercher leur contenu et récupérer les données dont j'ai besoin pour la suite du traitement.

donc je le fais avec mount et umount, …

Tu pourrais utiliser la commande udisksctl pour monter/démonter les systèmes de fichiers contenus dans ton fichier image iso,
et tu n'auras pas besoin des privilèges du compte root

=======
Voilà comment, sans avoir besoin d'utiliser les privilèges du compte root
je monte les systèmes de fichiers contenus dans les partitions du fichier image ISO ubuntu-budgie-21.04-desktop-amd64.iso

Création des fichiers de périphérique loop qui permettront d'accéder aux partitions contenues dans le fichier image ISO :

michel@debbull:~$ udisksctl loop-setup -f ~/Téléchargements/ISOsInstall/ubuntu-budgie-21.04-desktop-amd64.iso
Mapped file Téléchargements/ISOsInstall/ubuntu-budgie-21.04-desktop-amd64.iso as /dev/loop0.
michel@debbull:~$ 

Je liste les fichiers de périphérique qui viennent d'êtres créés
et qui permettent d'accéder aux partitions :

michel@debbull:~$ ls -l /dev/loop0p*
brw-rw---- 1 root disk 259, 0  2 févr. 17:19 /dev/loop0p1
brw-rw---- 1 root disk 259, 1  2 févr. 17:19 /dev/loop0p2
brw-rw---- 1 root disk 259, 2  2 févr. 17:19 /dev/loop0p3
michel@debbull:~$ 

Je monte le système de fichiers de la première partition :

michel@debbull:~$ udisksctl mount -b  /dev/loop0p1
Mounted /dev/loop0p1 at /media/michel/Ubuntu-Budgie 21.04 amd64
michel@debbull:~$ 

Je monte le système de fichiers de la deuxième partition :

michel@debbull:~$ udisksctl mount -b  /dev/loop0p2
Mounted /dev/loop0p2 at /media/michel/ESP
michel@debbull:~$ 

Je tente de monter le système de fichiers de la troisième partition :

michel@debbull:~$ udisksctl mount -b  /dev/loop0p3
Object /org/freedesktop/UDisks2/block_devices/loop0p3 is not a mountable filesystem.
michel@debbull:~$ 

=======
Je démonte le système de fichiers de la deuxième partition :

michel@debbull:~$ udisksctl unmount -b  /dev/loop0p2
Unmounted /dev/loop0p2.
michel@debbull:~$ 

Je démonte le système de fichiers de la première partition :

michel@debbull:~$ udisksctl unmount -b  /dev/loop0p1
Unmounted /dev/loop0p1.
michel@debbull:~$ 

Je "libère" le fichier de périphérique /dev/loop0

michel@debbull:~$ udisksctl loop-delete -b /dev/loop0
michel@debbull:~$ 

Dernière modification par MicP (Le 02/02/2022, à 19:45)

Hors ligne

#10 Le 02/02/2022, à 18:46

karses

Re : [Résolu] Python : commande shell ne prend pas les redirections

Merci, avec ça je vais pouvoir m'affranchir des droits root et mieux sécuriser l'ensemble...

Je teste et ferme le sujet Vendredi en principe.

Karses


Fonctionnement en dual boot depuis la 7.04 et full Ubuntu depuis la 9.04
Tous les PCs de la maison sont sous Ubuntu (portables et fixes)
Plus raspberry Pi sous raspbian
Cubox sous 14.04 FR (sarge)

Hors ligne

#11 Le 02/02/2022, à 19:35

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

MicP a écrit :

Création des fichiers de périphérique loop qui permettront d'accéder aux partitions contenues dans le fichier image ISO :

michel@debbull:~$ udisksctl loop-setup -f ~/Téléchargements/ISOsInstall/ubuntu-budgie-21.04-desktop-amd64.iso
Mapped file Téléchargements/ISOsInstall/ubuntu-budgie-21.04-desktop-amd64.iso as /dev/loop0.
michel@debbull:~$ 

Je liste les fichiers de périphérique qui viennent d'êtres créés
et qui permettent d'accéder aux partitions :

michel@debbull:~$ ls -l /dev/loop0p*
brw-rw---- 1 root disk 259, 0  2 févr. 17:19 /dev/loop0p1
brw-rw---- 1 root disk 259, 1  2 févr. 17:19 /dev/loop0p2
brw-rw---- 1 root disk 259, 2  2 févr. 17:19 /dev/loop0p3
michel@debbull:~$ 

Je monte le système de fichiers de la première partition :

michel@debbull:~$ udisksctl mount -b  /dev/loop0p1
Mounted /dev/loop0p1 at /media/michel/Ubuntu-Budgie 21.04 amd64
michel@debbull:~$ 

Bonjour @MicP,
En testant ta procédure je note que le nom des fichiers sont différents sur mon Pc:

(venv) ~/venv jt'écoute :udisksctl loop-setup -f ~/Téléchargements/debian-10.7.0-amd64-netinst.iso
Mapped file /home/fab/Téléchargements/debian-10.7.0-amd64-netinst.iso as /dev/loop7.
(venv) ~/venv jt'écoute :ls -l /dev/loop0p*
ls: impossible d'accéder à '/dev/loop0p*': Aucun fichier ou dossier de ce type
(venv) ~/venv jt'écoute :ls -l /dev/loop*
brw-rw---- 1 root disk   7,   0 févr.  2 17:18 /dev/loop0
brw-rw---- 1 root disk   7,   1 févr.  2 17:18 /dev/loop1
brw-rw---- 1 root disk   7,   2 févr.  2 17:18 /dev/loop2
brw-rw---- 1 root disk   7,   3 févr.  2 17:18 /dev/loop3
brw-rw---- 1 root disk   7,   4 févr.  2 17:18 /dev/loop4
brw-rw---- 1 root disk   7,   5 févr.  2 17:18 /dev/loop5
brw-rw---- 1 root disk   7,   6 févr.  2 17:18 /dev/loop6
brw-rw---- 1 root disk   7,   7 févr.  2 18:17 /dev/loop7
brw-rw---- 1 root disk 259,   6 févr.  2 18:17 /dev/loop7p1
brw-rw---- 1 root disk 259,   7 févr.  2 18:17 /dev/loop7p2
crw-rw---- 1 root disk  10, 237 févr.  2 17:18 /dev/loop-control
(venv) ~/venv jt'écoute :

Le nom du sytème de fichier de ma première partition serait donc:

brw-rw---- 1 root disk 259,   6 févr.  2 18:17 /dev/loop7p1

Je teste la suite ... wink

Dernière modification par Compte supprimé (Le 02/02/2022, à 19:36)

#12 Le 02/02/2022, à 19:48

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

Voilà, c'est exactement ça : suivant les périphériques loop déjà utilisés par le système,
le numéro de celui qui sera proposé ne sera pas toujours /dev/loop0 ou /dev/loop7
Par contre, les numéros de partitions resteront les mêmes pour un même fichier image ISO

Hors ligne

#13 Le 02/02/2022, à 19:53

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

Par contre

(venv) ~/venv jt'écoute :udisksctl loop-setup -f ~/Téléchargements/debian-10.7.0-amd64-netinst.iso
Mapped file /home/fab/Téléchargements/debian-10.7.0-amd64-netinst.iso as /dev/loop8.
(venv) ~/venv jt'écoute :

me lance l'interface graphique 'un support a été inséré , choisissez une application à lancer' et me monte par défaut (si je ne réponds pas à l'interface graphique) le système de fichier de ma première partition:

(venv) ~/venv jt'écoute :udisksctl mount -b  /dev/loop7p1
Error mounting /dev/loop7p1: GDBus.Error:org.freedesktop.UDisks2.Error.AlreadyMounted: Device /dev/loop7p1 is already mounted at `/media/fab/Debian 10.7.0 amd64 n'.

(venv) ~/venv jt'écoute :udisksctl mount -b  /dev/loop7p2
Mounted /dev/loop7p2 at /media/fab/C807-E474.
(venv) ~/venv jt'écoute :

Dernière modification par Compte supprimé (Le 02/02/2022, à 19:55)

#14 Le 02/02/2022, à 20:06

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

…me lance l'interface graphique 'un support a été inséré , choisissez une application à lancer' et me monte par défaut (si je ne réponds pas à l'interface graphique) le système de fichier de ma première partition: …

Il faut croire que la configuration de l'environnement de Bureau que tu utilises a été faite pour que tous les CD insérés dans un lecteur soient automatiquement montés.

et donc, avec cette configuration, quand tu as lancé la commande pour créer le périphérique loop avec cette image de CD
ton environnement de bureau a cru qu'un nouveau lecteur de CD contenant un CD avait été connecté à la machine
et il a automatiquement monté les systèmes de fichiers contenus dans ce CD

Du coup, tu n'as même pas eu besoin de les monter en utilisant ligne de commande.

=======
Par contre, je constate que le périphérique loop7 n'avait pas été libéré par la commande :

udisksctl loop-delete -b /dev/loop7

quand tu as lancé pour la deuxième fois la ligne de commande :

udisksctl loop-setup -f ~/Téléchargements/debian-10.7.0-amd64-netinst.iso

il a donc utilisé le fichier de périphérique suivant qui était disponible: /devloop8

Dernière modification par MicP (Le 02/02/2022, à 20:23)

Hors ligne

#15 Le 02/02/2022, à 20:47

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

Je créé les fichiers de périphériques loop qui vont me permettre d'accéder aux partitions contenues dans le fichier image ISO :

michel@debbull:~$ udisksctl loop-setup -f /home/michel/Téléchargements/ISOsInstall/debian-10.7.0-amd64-netinst.iso
Mapped file /home/michel/Téléchargements/ISOsInstall/debian-10.7.0-amd64-netinst.iso as /dev/loop0.
michel@debbull:~$ 

Je liste les fichiers de périphérique qui ont été créés :

michel@debbull:~$ ls -l /dev/loop0p*
brw-rw---- 1 root disk 259, 0  2 févr. 19:27 /dev/loop0p1
brw-rw---- 1 root disk 259, 1  2 févr. 19:27 /dev/loop0p2
michel@debbull:~$ 

À partir de là, si l'environnement de bureau que tu utilises
a été configuré pour monter automatiquement les systèmes de fichiers dès l'insertion d'un disque, CD ou clef USB, ou carte SD etc.
ton environnement de bureau va croire qu'un nouveau disque, CD ou clef a été connecté,
et il va automatiquement monter les systèmes de fichiers accessibles.

Donc, les opérations de montage suivantes
auront été automatiquement lancées par ton environnement de Bureau.

Je monte le système de fichiers contenu dans la première partition

michel@debbull:~$ udisksctl mount -b  /dev/loop0p1
Mounted /dev/loop0p1 at /media/michel/Debian 10.7.0 amd64 n
michel@debbull:~$ 

Je monte le système de fichiers contenu dans la deuxième partition

michel@debbull:~$ udisksctl mount -b  /dev/loop0p2
Mounted /dev/loop0p2 at /media/michel/C807-E474
michel@debbull:~$ 

=======
Ce qui suit peut aussi être fait depuis l'interface graphique de ton environnement de bureau,

Je démonte le système de fichiers contenu dans la deuxième partition

michel@debbull:~$ udisksctl unmount -b  /dev/loop0p2
Unmounted /dev/loop0p2.
michel@debbull:~$ 

Je démonte le système de fichiers contenu dans la première partition

michel@debbull:~$ udisksctl unmount -b  /dev/loop0p1
Unmounted /dev/loop0p1.
michel@debbull:~$ 

=======
Je libère le fichier de périphérique

/dev/loop0

qui avait été utilisé :

michel@debbull:~$ udisksctl loop-delete -b /dev/loop0
michel@debbull:~$ 

Depuis l'interface graphique,
cette opération peut être faite en cliquant sur l'option
qui est souvent nommée Éjecter le disque (ou la clef USB, ou le CD, ça dépendra de comment ton environnement de Bureau et ses application aura reconnu le fichier image ISO)

Hors ligne

#16 Le 02/02/2022, à 21:05

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

@MicP voici ce que ça donne chez moi:

~ jt'écoute :udisksctl loop-setup -f ~/Téléchargements/debian-10.7.0-amd64-netinst.iso
Mapped file /home/fab/Téléchargements/debian-10.7.0-amd64-netinst.iso as /dev/loop7.
~ jt'écoute :

L'interface graphique apparait mais je n'y touche pas...

~ jt'écoute :ls -l /dev/loop*
brw-rw---- 1 root disk   7,   0 févr.  2 19:44 /dev/loop0
brw-rw---- 1 root disk   7,   1 févr.  2 19:44 /dev/loop1
brw-rw---- 1 root disk   7,   2 févr.  2 19:44 /dev/loop2
brw-rw---- 1 root disk   7,   3 févr.  2 19:44 /dev/loop3
brw-rw---- 1 root disk   7,   4 févr.  2 19:44 /dev/loop4
brw-rw---- 1 root disk   7,   5 févr.  2 19:44 /dev/loop5
brw-rw---- 1 root disk   7,   6 févr.  2 19:44 /dev/loop6
brw-rw---- 1 root disk   7,   7 févr.  2 19:46 /dev/loop7
brw-rw---- 1 root disk 259,   6 févr.  2 19:46 /dev/loop7p1
brw-rw---- 1 root disk 259,   7 févr.  2 19:46 /dev/loop7p2
crw-rw---- 1 root disk  10, 237 févr.  2 19:44 /dev/loop-control

à noter que /dev/loop7 pré-existait .

~ jt'écoute :udisksctl unmount -b  /dev/loop7p2
Error unmounting /dev/loop7p2: GDBus.Error:org.freedesktop.UDisks2.Error.NotMounted: Device `/dev/loop7p2' is not mounted
~ jt'écoute :udisksctl unmount -b  /dev/loop7p1
Unmounted /dev/loop7p1.
~ jt'écoute :
~ jt'écoute :udisksctl loop-delete -b /dev/loop7

ouvre l'interface graphique me demandant de m'identifier
Une fois fait, j'ai le retour de la commande:

~ jt'écoute :udisksctl loop-delete -b /dev/loop7
Error deleting loop device /dev/loop7: GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._g_2dbd_2dloop_2derror_2dquark.Code1: Error deleting '/dev/loop7': Failed to detach the backing file from the /dev/loop7 device: No such device or address
~ jt'écoute :

Je te laisse interpréter les retours.

Dernière modification par Compte supprimé (Le 02/02/2022, à 21:06)

#17 Le 03/02/2022, à 14:56

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

MPython Alaplancha a écrit :

L'interface graphique apparait mais je n'y touche pas...

Il m'est impossible d'interpréter cette phrase ne sachant quelle distribution, version, environnement de Bureau tu utilises
et comment cet environnement de bureau a été configuré en ce qui concerne les périphériques blocs qui seront connectés à ta machine.

MPython Alaplancha a écrit :

à noter que /dev/loop7 pré-existait .

peut-être que, suivant la configuration de ton système Linux,
ton système avait déjà créé les fichiers de périphérique /dev/loop0 à 7 et déjà utilisé
ou réservé pour son usage personnel les fichiers de périphérique /dev/loop0 à 6 (snap ou autre ? tout dépends de ton système)

=======

michel@ubu20043lts:~$ ls -l /dev/loop*
brw-rw---- 1 root disk  7,   0 févr.  3 13:23 /dev/loop0
brw-rw---- 1 root disk  7,   1 févr.  3 13:23 /dev/loop1
brw-rw---- 1 root disk  7,  10 févr.  3 13:23 /dev/loop10
brw-rw---- 1 root disk  7,  11 févr.  3 13:23 /dev/loop11
brw-rw---- 1 root disk  7,  12 févr.  3 13:23 /dev/loop12
brw-rw---- 1 root disk  7,  13 févr.  3 13:23 /dev/loop13
brw-rw---- 1 root disk  7,  14 févr.  3 13:23 /dev/loop14
brw-rw---- 1 root disk  7,   2 févr.  3 13:23 /dev/loop2
brw-rw---- 1 root disk  7,   3 févr.  3 13:23 /dev/loop3
brw-rw---- 1 root disk  7,   4 févr.  3 13:23 /dev/loop4
brw-rw---- 1 root disk  7,   5 févr.  3 13:23 /dev/loop5
brw-rw---- 1 root disk  7,   6 févr.  3 13:23 /dev/loop6
brw-rw---- 1 root disk  7,   7 févr.  3 13:23 /dev/loop7
brw-rw---- 1 root disk  7,   8 févr.  3 13:23 /dev/loop8
brw-rw---- 1 root disk  7,   9 févr.  3 13:23 /dev/loop9
crw-rw---- 1 root disk 10, 237 févr.  3 13:23 /dev/loop-control
michel@ubu20043lts:~$ 

On voit sur mon système ubuntu 20.04.3 LTS qu'il y a déjà 15 fichiers de périphériques loop qui ont été automatiquement créés par le système.

michel@ubu20043lts:~$ udisksctl loop-setup -f Téléchargements/ubuntu-budgie-21.04-desktop-amd64.iso
Mapped file Téléchargements/ubuntu-budgie-21.04-desktop-amd64.iso as /dev/loop14.
michel@ubu20043lts:~$ 

La commande udisksctl a visiblement utilisé le premier fichier de périphérique loop disponible
qui était le dernier de la liste : /dev/loop14

On voit donc maintenant apparaître les périphériques loop qui permettront d'accéder aux partitions : /dev/loop14p1 à p3
(et aux éventuels systèmes de fichiers  qu'ils contiennent)

michel@ubu20043lts:~$ ls -l /dev/loop*
brw-rw---- 1 root disk   7,   0 févr.  3 13:23 /dev/loop0
brw-rw---- 1 root disk   7,   1 févr.  3 13:23 /dev/loop1
brw-rw---- 1 root disk   7,  10 févr.  3 13:23 /dev/loop10
brw-rw---- 1 root disk   7,  11 févr.  3 13:23 /dev/loop11
brw-rw---- 1 root disk   7,  12 févr.  3 13:23 /dev/loop12
brw-rw---- 1 root disk   7,  13 févr.  3 13:23 /dev/loop13
brw-rw---- 1 root disk   7,  14 févr.  3 13:38 /dev/loop14
brw-rw---- 1 root disk 259,   0 févr.  3 13:38 /dev/loop14p1
brw-rw---- 1 root disk 259,   1 févr.  3 13:38 /dev/loop14p2
brw-rw---- 1 root disk 259,   2 févr.  3 13:38 /dev/loop14p3
brw-rw---- 1 root disk   7,   2 févr.  3 13:23 /dev/loop2
brw-rw---- 1 root disk   7,   3 févr.  3 13:23 /dev/loop3
brw-rw---- 1 root disk   7,   4 févr.  3 13:23 /dev/loop4
brw-rw---- 1 root disk   7,   5 févr.  3 13:23 /dev/loop5
brw-rw---- 1 root disk   7,   6 févr.  3 13:23 /dev/loop6
brw-rw---- 1 root disk   7,   7 févr.  3 13:23 /dev/loop7
brw-rw---- 1 root disk   7,   8 févr.  3 13:23 /dev/loop8
brw-rw---- 1 root disk   7,   9 févr.  3 13:23 /dev/loop9
crw-rw---- 1 root disk  10, 237 févr.  3 13:23 /dev/loop-control
michel@ubu20043lts:~$ 

Suite à l'exécution de la commande udisksctl,
aucune fenêtre popup ne s'est ouverte dans l'interface graphique de l'environnement de bureau.

=======

MPython Alaplancha a écrit :
~ jt'écoute :udisksctl unmount -b  /dev/loop7p2
Error unmounting /dev/loop7p2: GDBus.Error:org.freedesktop.UDisks2.Error.NotMounted: Device `/dev/loop7p2' is not mounted
MPython Alaplancha a écrit :
~ jt'écoute :udisksctl unmount -b  /dev/loop7p1
Unmounted /dev/loop7p1.
~ jt'écoute :

Tu n'as pas monté les systèmes de fichiers que tu essaye de démonter,
ni vérifié s'ils avaient été montés en lançant la commande :

mount

Il est donc logique que, s'ils n'ont pas été montés, tu ne puisses pas les démonter.

Dernière modification par MicP (Le 03/02/2022, à 16:08)

Hors ligne

#18 Le 03/02/2022, à 15:52

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

Bonjour,

Il m'est impossible d'interpréter cette phrase ne sachant quelle distribution, version, environnement de Bureau tu utilises
et comment cet environnement de bureau a été configuré en ce qui concerne les périphériques blocs qui seront connectés à ta machine.

J'utilise ubuntu 20.04.3 LTS Mate et la configuration est celle d'origine.

Je recommence:

~ jt'écoute :udisksctl loop-setup -f ~/Téléchargements/debian-10.7.0-amd64-netinst.iso
Mapped file /home/fab/Téléchargements/debian-10.7.0-amd64-netinst.iso as /dev/loop7.
~ jt'écoute :

Je ne réponds pas à l'interface graphique qui me propose 'un support a été inséré , choisissez une application à lancer'...
Je constate en listant le contenu de /dev/loop, la création de p1, p2.
Je constate en lançant mount que seul p1 est monté. Ce qui est confirmé ci-dessous:

~ jt'écoute :udisksctl mount -b  /dev/loop7p1
Error mounting /dev/loop7p1: GDBus.Error:org.freedesktop.UDisks2.Error.AlreadyMounted: Device /dev/loop7p1 is already mounted at `/media/fab/Debian 10.7.0 amd64 n'.

~ jt'écoute :

Je monte alors manuellement p2 qui n'a pas été monté automatiquement:

~ jt'écoute :udisksctl mount -b  /dev/loop7p2
Mounted /dev/loop7p2 at /media/fab/C807-E474.

Je verifie avec mount que p1 et p2 sont bien montés:

/dev/loop7p1 on /media/fab/Debian 10.7.0 amd64 n type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=1000,gid=1000,dmode=500,fmode=400,iocharset=utf8,uhelper=udisks2)
gvfsd-fuse on /home/fab/.cache/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
/dev/loop7p2 on /media/fab/C807-E474 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
~ jt'écoute :

Je demonte p2:

~ jt'écoute :udisksctl unmount -b  /dev/loop7p2
Unmounted /dev/loop7p2.
~ jt'écoute :

Je demonte p1:

~ jt'écoute :udisksctl unmount -b  /dev/loop7p1
Unmounted /dev/loop7p1.
~ jt'écoute :

Là chose étrange j'ai une fenêtre graphique avec un sens interdit disant: impossible de monter Volume No .filesystem or .Encrypted interface on D-Bus object
Et si je fais:

udisksctl loop-delete -b /dev/loop7

nouvelle interface graphique me demandant mon mdp

#19 Le 03/02/2022, à 15:59

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

Voici un autre retour peut-être utile:

~ jt'écoute :losetup --list /dev/loop7
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop7                          0  0             0     512
~ jt'écoute :

#20 Le 03/02/2022, à 17:08

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

Je viens d'installer ubuntu 20.04.3 mate pour vérifier.

Effectivement, c'est bien ce que je suspectais dans mon message #14 :

Dans mon message #14, MicP a écrit :

… Il faut croire que la configuration de l'environnement de Bureau que tu utilises a été faite pour que tous les CD insérés dans un lecteur soient automatiquement montés. …

par défaut, le simple fait de connecter un disque ou clef ou d'attacher ce support à un fichier de périphérique loop en utilisant la commande udisksctl
fait que le premier système de fichiers existant sur ce support est automatiquement monté par le système (que le premier, et pas les suivants)

On peut ensuite démonter les systèmes de fichiers avec la commande udisksctl, mais on ne peut pas détacher le support du fichier de périphérique loop
sans entrer (dans une fenêtre popup qui apparaît dans l'interface graphique) un mot de passe donnant l'accès aux privilèges du compte root.

=======
Pour résoudre ce problème, il faut aller à Centre de contrôle -> File Management -> Onglet Supports -> Gestion des supports
et cocher la case à cocher qui est associée au label : Ne Jamais demander ou démarrer des programmes à l'insertion d'un support

Et après ça, on n'aura plus besoin d'avoir à entrer le mot de passe d'accès aux privilèges du compte root
pour pouvoir détacher un fichier image ISO qui aurait été attaché en ligne de commande.

Dernière modification par MicP (Le 03/02/2022, à 17:24)

Hors ligne

#21 Le 03/02/2022, à 18:09

karses

Re : [Résolu] Python : commande shell ne prend pas les redirections

Si je résume :
udisksctl permet de gérer complètement le fichier iso comme un disque (écriture?)
Par contre, l'utilitaire attribue seul le point de montage qu'il faut récupérer.
De mémoire avec cette commande :

~ jt'écoute :udisksctl mount -b  /dev/loop7p2
Mounted /dev/loop7p2 at /media/fab/C807-E474.

Tu ne peux pas ecrire dans /dev/loop7p2 mais tu peux le faire dans /media/fab/C807-E474. -> Il faut donc aussi le récupérer. C'est aussi à partir de là qu'on peut récupérer les fichiers utiles?

N'est-ce pas plus simple avec un outil comme fuseiso? par contre je crois qu'on ne peut pas écrire dans l'iso montée.

Karses

Dernière modification par karses (Le 03/02/2022, à 18:10)


Fonctionnement en dual boot depuis la 7.04 et full Ubuntu depuis la 9.04
Tous les PCs de la maison sont sous Ubuntu (portables et fixes)
Plus raspberry Pi sous raspbian
Cubox sous 14.04 FR (sarge)

Hors ligne

#22 Le 03/02/2022, à 19:50

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

… Tu ne peux pas ecrire dans /dev/loop7p2 mais tu peux le faire dans /media/fab/C807-E474. …

Oui : /dev/loop7p2 est le fichier de périphérique qui permet l'accès à la partition qui contient le système de fichiers
et /media/fab/C807-E474 est le point de montage qui permet d'accéder à ce système de fichiers (et donc, aux fichiers qu'il contient).

Si tu écris directement dans la partition, tu détruiras la façon dont sont organisées les données dans cette partition
ce qui rendra le système de fichiers contenu dans cette partition incohérent et inutilisable.

=======

… par contre je crois qu'on ne peut pas écrire dans l'iso montée …

Ce type de fichier ISO est un fichier image qui doit pouvoir être démarré comme un CD
Un CD ISO, une fois qu'il a été gravé est logiquement en lecture seule,
et tu peux d'ailleurs constater que ce système de fichiers est monté en lecture seule.

Si tu veux pouvoir modifier le contenu d'un fichier image ISO,
il faudra installer un des programmes qui permettraient de re-créer un fichier image ISO
avec le contenu du nouveau fichier ISO que tu veux créer,
comme par exemple, le programme genisoimage

Dernière modification par MicP (Le 03/02/2022, à 21:12)

Hors ligne

#23 Le 03/02/2022, à 20:33

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

MicP a écrit :

Pour résoudre ce problème, il faut aller à Centre de contrôle -> File Management -> Onglet Supports -> Gestion des supports

C'est entendu.

Je te remercie pour ton partage. C'est un peu comme un baptême de la plongée sous-marine: une immersion dans les entrailles de mon pc. J'ignore si cela me servira, mais ça m'a permis de comprendre un peu mieux comment cela fonctionne wink.
J'apprécie smile

#24 Le 03/02/2022, à 20:59

MicP

Re : [Résolu] Python : commande shell ne prend pas les redirections

C'est toujours difficile de faire des généralités à moins de régulièrement essayer toutes les différentes déclinaisons d'Ubuntu (et de chaque version),
elles ont toutes leurs spécificités, et ce montage automatique à l'insertion doit très certainement faire plaisir à beaucoup d'utilisateurs qui trouvent ça bien pratique (et de fait, ça l'est)
mais qui n'ont pas (et qui n'auront peut-être jamais) besoin d'utiliser un script comme celui qui est demandé ici.
Et, d'un autre côté, c'est quand même bien plus sympa (et secure) de pouvoir lancer ce script sans avoir besoin d'utiliser les privilèges du compte root
Ce qui finalement est encore plus sympa, c'est qu'il n'y a qu'une case à cocher/décocher pour que ça fonctionne comme on veut.

Dernière modification par MicP (Le 03/02/2022, à 21:10)

Hors ligne

#25 Le 04/02/2022, à 07:50

Compte supprimé

Re : [Résolu] Python : commande shell ne prend pas les redirections

MicP a écrit :

Ce qui finalement est encore plus sympa, c'est qu'il n'y a qu'une case à cocher/décocher pour que ça fonctionne comme on veut.

Oui c'est cette possibilité de prise en main que j'apprecie dans les systèmes gnu/linux. cool