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 20/12/2016, à 16:51

gerarlambert

[résolu] un peu d'aide pour faire une liste avec zenity

Bonjour,

J'ai fait un petit script qui permet de lister les périphériques USB et d'en choisir un pour le démonter :

#!/bin/bash
list_cle_usb=$(df -h | grep "/media/tony")

choix_cle=$(zenity \
--list \
--title="Ejection" --width=600 --height=200 \
--text="Ejection possible :" \
--column="Sys. de fichiers             Taille Utilisé Dispo Uti% Monté sur" "$list_cle_usb" \
--print-column="1"
--separator=" ")

montage=$(echo $choix_cle| awk -F" " '{print $1}')
umount $montage

sauf que ca ne marche que s'il n'y a qu'un seul périphérique monté !
En fait je n'ai toujours qu'un seul choix dans zenity (même si plusieurs clé sont montés), je ne vois pas comment transformer list_cle_usb en une liste de chaine et non pas en une chaine unique

merci de votre aide.

Dernière modification par gerarlambert (Le 20/12/2016, à 20:55)

Hors ligne

#2 Le 20/12/2016, à 18:24

Sciensous

Re : [résolu] un peu d'aide pour faire une liste avec zenity

enlève les guillemets de : "$list_cle_usb"
puisque il faut une liste séparée par espace entre chaque champ

rem: ta commande df ne retourne pas que les usb mais tout ce qui est monté


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#3 Le 20/12/2016, à 19:41

Hizoka

Re : [résolu] un peu d'aide pour faire une liste avec zenity

Salut, perso ça fonctionne :

list_cle_usb=$(df -h | grep "/media/tony")

oldIFS=${IFS}
IFS=$'\n'

choix_cle=$(zenity \
--list \
--title="Ejection" --width=600 --height=200 \
--text="Ejection possible :" \
--column="Sys. de fichiers             Taille Utilisé Dispo Uti% Monté sur" ${list_cle_usb} \
--print-column="1")

IFS=${oldIFS}

Mais c'est pas trés propre ta façon d'afficher les infos, il faudrait un vrai tableau plutot qu'une ligne.

EDIT : de ce genre là :

list_cle_usb=$(df -h | grep "/media/tony")

choix_cle=$(zenity \
--list \
--title="Ejection" --width=600 --height=200 \
--text="Ejection possible :" \
--column="Sys. de fichiers" --column="Taille" --column="Utilisé" --column="Dispo" --column="Uti%" --column="Monté sur" ${list_cle_usb} \
--print-column="1")

Hesite pas à jeter un oeil sur mon (vieux) soft Zenitor : https://doc.ubuntu-fr.org/zenitor_3
Qui doit encore être utilisable.

Dernière modification par Hizoka (Le 20/12/2016, à 19:49)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 20/12/2016, à 20:08

gerarlambert

Re : [résolu] un peu d'aide pour faire une liste avec zenity

@Sciensous
-df remonte tout ce qui est monté c'est pour ca que je fait un grep ... maintenant ce n'est peux etre pas la meilleur facon de remonté les clé usb (et disque dur usb) monté et uniquement ca mais pour l'instant je n'ai pas trouvé mieux et ca a l'air de bien fonctionner
-si j'enleve les guillemets sans rien faire d'autre, zenity considère chaque espace comme un nouvel élts de la liste hors moi je voudrais qu'il considère chque ligne comme nouvel elts   

@Hizoka
effectivement la solution 2 est très élégante mais elle ne fonctionne pas si il y a des espaces dans le nom de la cle usb par exemple 

/dev/sde1                      3,8G    1,2G  2,6G  33% /media/tony/Xubuntu 16.04 LTS i386
/dev/sdf1                      299G    4,3G  294G   2% /media/tony/4FB5169911BFA036
/dev/sdd1                       30G     15G   16G  47% /media/tony/Samsung

mais la solution 1 me va très bien !

merci bcp a vous deux :-)

Hors ligne

#5 Le 20/12/2016, à 20:55

gerarlambert

Re : [résolu] un peu d'aide pour faire une liste avec zenity

je mets donc le script définitifs
merci encore pour votre aide et promis a l'occasion je regarderai zenitor 3 !

#!/bin/bash
list_cle_usb=$(df -h | grep "/media/tony")

oldIFS=${IFS}
IFS=$'\n'

choix_cle=$(zenity \
--list \
--title="Ejection" --width=600 --height=200 \
--text="Ejection possible :" \
--column="Sys. de fichiers             Taille Utilisé Dispo Uti% Monté sur
" ${list_cle_usb} \
--print-column="1")

IFS=${oldIFS}


sysFic=$(echo $choix_cle| awk -F" " '{print $1}')
umount $sysFic
montage=$(echo $choix_cle| awk -F"/" '{print $6}'| sed s/' '/'_'/g)
notify-send "L'éjection est terminé" "Le périphérique "$montage" a été retiré en toute sécurité du système" -i drive-removable-media-usb -t 3000

Hors ligne

#6 Le 20/12/2016, à 21:27

Hizoka

Re : [résolu] un peu d'aide pour faire une liste avec zenity

et avec ça ? c'est pas ultra propre mais bon...

oldIFS=${IFS}
IFS=$'\n'

choix_cle=$(zenity \
--list \
--title="Ejection" --width=600 --height=200 \
--text="Ejection possible :" \
--column="Sys. de fichiers" --column="Taille" --column="Utilisé" --column="Dispo" --column="Uti%" --column="Monté sur" \
--print-column="1" \
$(while read ligne
do
  x=$(sed "s@ \+ @\n@g; s@ /@\n/@" <<< "${ligne}")
  echo -e "${x}\n"
done < <(df -h | grep "/media/tony")))

 IFS=${oldIFS}

KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#7 Le 20/12/2016, à 22:09

gerarlambert

Re : [résolu] un peu d'aide pour faire une liste avec zenity

euh bah oui ca marche ! par contre j'ai pas encore compris comment :-)
c'est surtout l'espace entre les deux < sur la ligne
done < <(df -h | grep "/media/tony")))

qui me perturbe, d'autant que sans espace ca ne marche plus !

Hors ligne