#1 Le 02/12/2008, à 20:55
[Résolu] Une idée de script, mais pas les compétences pour le faire
Bonjour à tous
J'ai une idée de script, mais pas les compétences pour le réaliser
. Même si je vois la logique générale, cela s'arréte là. Donc si quelqu'un juge l'idée utile et a les compétences...
C'est à propos du dossier Private de la 8.10. Je trouve que c'est un peu pénible de le monter ou démonter en ligne de commande. C'est sur que l'on peut faire 2 lanceurs, pour monter et démonter, mais dans ce cas on ne sait jamais vraiment a quel stade est ce dossier.
L'idée serait donc de créer un scipt, accessible d'un tableau de bord par exemple. Un clic sur l'icône teste l'état du dossier.
Si le dossier Private est monté une fenêtre zenity s'affiche disant : Le dossier Private est actuellement ouvert, voulez vous le fermer ? (ou une expression plus pertinente). Un appui sur ok va démonter le dossier, un appui sur annuler le laisse en l'état.
Si le dossier Private est démonté une fenêtre zenity s'affiche disant : Le dossier Private est actuellement fermé, voulez vous le l'ouvrir ? (ou une expression plus pertinente). Un appui sur ok va monter le dossier, un appui sur annuler le laisse en l'état.
Qu'en pensez vous ?
Edit : pour ceux qui sont pressés, la solution est là : http://forum.ubuntu-fr.org/viewtopic.php?pid=2253871#p2253871
Dernière modification par soupaloignon (Le 03/12/2008, à 11:25)
Hors ligne
#2 Le 02/12/2008, à 21:23
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Je ne sais rien de ce dossier, mais tu peux essayer de voir s'il existe une commande pour le vérifier le statut de ce dossier.
Sinon, je suppose qu'il n'y pas de danger a démonter quelque chose de déjà monté.
Tu fais un script avec un if ou un case ca prendra pas longtemps à faire
, et l'apprentissage est très facile.
Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur
Hors ligne
#3 Le 02/12/2008, à 21:51
- AnsuzPeorth
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Je ne connais pas non plus ce dossier !!!???
#!/bin/sh
DOSSIER="adresse/du/dossier/private"
if [ -e "$DOSSIER" ]; then
zenity --question --text="le dosssier est deja monté, voulez le démonter ?" && commande pour démonter || exit
else
zenity --question --text="le dosssier n'est pas monté, voulez le monter ?" && commande pour monter || exit
fiC'est du vite fait mais ca devrait le faire ! (a tester)
#4 Le 02/12/2008, à 21:54
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Je ne connais pas non plus ce dossier !!!???
#!/bin/sh DOSSIER="adresse/du/dossier/private" if [ -e "$DOSSIER" ]; then zenity --question --text="le dosssier est deja monté, voulez le démonter ?" && commande pour démonter || exit else zenity --question --text="le dosssier n'est pas monté, voulez le monter ?" && commande pour monter || exit fiC'est du vite fait mais ca devrait le faire ! (a tester)
Merci pour cette réponse, je teste ça de suite.
Info sur le dossier crypté de intépid ibex :
http://doc.ubuntu-fr.org/dossier_prive_crypte?s[]=private
https://help.ubuntu.com/community/EncryptedPrivateDirectory
Hors ligne
#5 Le 02/12/2008, à 22:00
- AnsuzPeorth
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
J'ai oublié le exit a la fin du script ...
#6 Le 02/12/2008, à 22:10
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
N'oublie pas de changer les droits sur le scripts qu'on vient de te fournir. De plus, inutile de te dire qu'il ne s'agit la que d'un "plan", il te faudra les vraies commandes pour faire quelques chose.
Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur
Hors ligne
#7 Le 02/12/2008, à 22:10
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
#!/bin/bash
DOSSIER="/home/toto/Private"
if [ -e "$DOSSIER" ]; then
zenity --question --text="le dosssier est deja monté, voulez le démonter ?" && umount.ecryptfs_private || exit
else
zenity --question --text="le dosssier n'est pas monté, voulez le monter ?" && mount.ecryptfs_private || exit
fi
exitCela ne fonctionne pas hélas, le test renvoi toujours que le dossier est déjà monté. Lorsqu'il est effectivement monté, le script le démonte. Par contre lorsque le dossier Private est démonté, le script le voit comme monté.
Ceci dit le dossier Private est toujours présent dans le home, qu'il soit monté ou non. Mais lorsqu'il ets démonté il y a un cadenas indiquant que le contenu n'est pas accessible.
Il faudrait faire un test sur les permissions plutôt que sur la présence ?
Dernière modification par soupaloignon (Le 02/12/2008, à 22:14)
Hors ligne
#8 Le 02/12/2008, à 22:22
- AnsuzPeorth
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
le if [ -e ..] test si le dossier existe, si il est present dans ton home meme démonter, faut chercher ailleurs le point de montage, ou peut etre dans les options du dossier
#9 Le 02/12/2008, à 22:23
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Bon, j'ai contourné le problème en faisant tester au script la présence d'un fichier dans le dossier Private (fichier 01). S'il arrive à le voir, c'est que le dossier est ouvert, et inversement. Là ça fonctionne, mais ça manque d'élégance ![]()
#!/bin/bash
DOSSIER="/home/toto/Private/01"
if [ -e "$DOSSIER" ]; then
zenity --question --text="le dosssier est deja monté, voulez le démonter ?" && umount.ecryptfs_private || exit
else
zenity --question --text="le dosssier n'est pas monté, voulez le monter ?" && mount.ecryptfs_private || exit
fi
exitDernière modification par soupaloignon (Le 02/12/2008, à 22:24)
Hors ligne
#10 Le 02/12/2008, à 22:30
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
le if [ -e ..] test si le dossier existe, si il est present dans ton home meme démonter, faut chercher ailleurs le point de montage, ou peut etre dans les options du dossier
Le dossier est monté dans le home, c'est juste une histoire de permissions.
Hors ligne
#11 Le 02/12/2008, à 22:34
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Il doit y avoir un fichier quelque part qui indique le statut du dossier en question.
Si tel est le cas, tu peux faire un truc comme ca "f=`cut -d: -f6 /etc/passwd | grep $name`"
(provient d'un script que j'ai fais en cours). Ici, on cherche une variable $name dans un le fichier /etc/passws et l'on récupère le 6ème champs (il faut donc connaitre la structure du fichier) de la ligne où l'on a trouvé le nom recherché.
Si tu fais la même chose en supposant qu'il y ait un champ avec marqué mount ou unmount, tu n'aura qu'a finaliser ton script.
Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur
Hors ligne
#12 Le 02/12/2008, à 22:36
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
C'est plus élégant effectivement
. Je vais rechercher ce fameux fichier
Hors ligne
#13 Le 02/12/2008, à 22:38
- AnsuzPeorth
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
regarde là, tu y trouvera bien une option qui te convient
#14 Le 02/12/2008, à 22:50
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
regarde là, tu y trouvera bien une option qui te convient
Génial
, merci beaucoup. Il y a l'option -r ( -r :le fichier dispose du droit de lecture (pour l'utilisateur ayant exécuté la commande)) qui convient parfaitement, et maintenant cela fonctionne.
Merci à tous pour vos réponses, quelle réactivité quand même !!! ![]()
Le script final est donc :
#!/bin/bash
DOSSIER="$HOME/Private"
if [ -r "$DOSSIER" ]; then
zenity --question --text="le dosssier est deja monté, voulez le démonter ?" && umount.ecryptfs_private || exit
else
zenity --question --text="le dosssier n'est pas monté, voulez le monter ?" && mount.ecryptfs_private || exit
fi
exitEdit : Non, cela ne fonctionne pas en fait : http://forum.ubuntu-fr.org/viewtopic.php?pid=2253410#p2253410
Dernière modification par soupaloignon (Le 03/12/2008, à 00:12)
Hors ligne
#15 Le 02/12/2008, à 22:50
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
mount -lQuand tu fais ça, si le fichier est monté, tu le vois ? (je suis sous debian, donc je peut pas tester.)
Hors ligne
#16 Le 02/12/2008, à 22:57
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
mount -lQuand tu fais ça, si le fichier est monté, tu le vois ? (je suis sous debian, donc je peut pas tester.)
Oui, il apparait dans la liste. Mais le problème est résolu (voir plus haut). Merci de t'être intéressé à la question ![]()
Dernière modification par soupaloignon (Le 02/12/2008, à 22:58)
Hors ligne
#17 Le 02/12/2008, à 23:07
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
On a posté en même temps aussi ![]()
Bon, bah au moins tu sais que tu aurais pu faire avec mount -l aussi.
Hors ligne
#18 Le 02/12/2008, à 23:10
- AnsuzPeorth
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Pour que tout le monde puisse l'utiliser
#remplace
DOSSIER="/home/toto/Private"
#par
DOSSIER="$HOME/Private"#19 Le 02/12/2008, à 23:19
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
On a posté en même temps aussi
Bon, bah au moins tu sais que tu aurais pu faire avec mount -l aussi.
Oui, mais je préfére la solution du test des droits, c'est plus cohérent.
Pour que tout le monde puisse l'utiliser
#remplace DOSSIER="/home/toto/Private" #par DOSSIER="$HOME/Private"
Très juste, je voulais le faire et puis j'ai zappé. Je viens de faire la modif
Dernière modification par soupaloignon (Le 02/12/2008, à 23:20)
Hors ligne
#20 Le 02/12/2008, à 23:20
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Tu peux aussi demander à l'utilisateur de saisir son nom et faire en fonction
echo "Entrez votre nom"
read name
Dossier=/home/$name/Private
Logiciels incontournables => Terminator : terminal divisible; GNS3 : Simulation de réseau avec IOS Cisco; DIA : Editeur de diagrammes pour réseaux et autres; VirtualBox : Emulateur d'ordinateur
Hors ligne
#21 Le 03/12/2008, à 00:11
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Oup's, grosse erreur de ma part. En fait le script ne fonctionne pas en l'état.
Lorsque j'ai remplacé -e par -r je n'ai pas enlevé le 01 à la fin de la igne. Ce qui fait que le script testait toujours s'il avait accès ou non à ce fichier. Ce qui m'a fait croire qu'avec l'option -r c'était bon.
Mais en enlevant le 01 à la fin, cela ne fonctionne plus.
Je continue mes recherche
Hors ligne
#22 Le 03/12/2008, à 00:20
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Bon voilà, c'est bon cette fois
. Avec un test sur les droits d'écriture.
Par contre si des fenêtres sont déjà ouvertes, la fenêtre Zenity ne passe pas en 1er plan. Il y a un moyen que cela soit le cas, histoire de ne pas avoir à cliquer dans le tableau de bord pour la faire apparaitre ?
J'ai trouvé ça: http://pwet.fr/tags/keywords/weblog/shell/(offset)/10
qui va dans ce sens (mais pas testé encore) mais cela me parait un peu lourd et demande l'installation d'un autre programme.
J'ai trouvé ça aussi : https://bugs.launchpad.net/zenity/+bug/272083
http://www.enemyterritory.fr/forums/index.php?s=d0482046dc74f09caf833bf3d8f4d2c9&showtopic=14764&pid=254258&st=0&#entry254258
Je laisse les liens dans le post pour creuser plus tard, parce que là, dodo ![]()
Le script "presque" final est donc
#!/bin/bash
DOSSIER="$HOME/Private"
if [ -w "$DOSSIER" ]; then
zenity --question --text="le dosssier est deja monté, voulez le démonter ?" && umount.ecryptfs_private || exit
else
zenity --question --text="le dosssier n'est pas monté, voulez le monter ?" && mount.ecryptfs_private || exit
fi
exitDernière modification par soupaloignon (Le 03/12/2008, à 00:36)
Hors ligne
#23 Le 03/12/2008, à 01:19
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Bon, comme ça me titillait j'ai quand même creusé et j'ai trouvé la solution. J'écrirai tout ça demain, car là, c'est vraiment dodo ![]()
Hors ligne
#24 Le 03/12/2008, à 11:05
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Pour rappel le script fonctionne maintenant de manière impeccable avec l'option -w qui teste les droits d'écriture sur le dossier Private.
Le dernier problème était que la fenêtre zenity ne s'affichait pas au 1er plan, mais venait se loger dans le tableau de bord des applications ouvertes.
Après quelques recherches il s'avère que c'est un bug de zenity sur la version 8.10 d'Ubuntu, et, toujours après ces quelques recherches, il s'avère aussi qu'il y a un patch pour corriger ça ![]()
Télécharger le patch : http://launchpadlibrarian.net/18653141/zenity-2.24.0-focus.patch
Ensuite lancer cette ligne en console pour l'installer (si vous l'avez téléchargé sur le Bureau):
sudo patch -p0 /usr/share/zenity/zenity.glade < Bureau/zenity-2.24.0-focus.patchil faut avoir le programme patch d'installé sur votre machine, si ce n'est pas le cas
sudo apt-get install patch(ou avec aptitude selon vos préférences
).
Et voilà, le bug est corrigé.
Bug sur le launchpad + le patch :https://bugs.launchpad.net/ubuntu/+sour … bug/272083
La ligne de commande qui va bien pour le lancer (dans le 1er post) : http://www.enemyterritory.fr/forums/index.php?s=d0482046dc74f09caf833bf3d8f4d2c9&showtopic=14764&pid=254258&st=0&#
J'ai rajouté dans le script une fenêtre d'info zenity confirmant l'état du dossier Private une fois que l'on a cliqué pour valider le changement d'état. Cela va rassurer les utilisateurs sans trop d'expériences. Dans le même esprit j'ai modifié également les textes, qui parlaient de montage et de démontage, des notions un peu obscures pour l'utilisateur de base (ce n'est pas péjoratif).
Il suffit maintenant juste de mettre le script dans un dossier quelconque du home utilisateur, et de faire un lanceur dans le tableau de bord qui pointe vers le script, pour avoir une icône toujours visible et prête à être utilisée.
Le script final :
#!/bin/bash
DOSSIER="$HOME/Private"
if [ -w "$DOSSIER" ]; then
zenity --question --text="Votre dosssier Private est ouvert, voulez-vous le fermer ?" && umount.ecryptfs_private && zenity --info --text="Votre dossier Private est maintenant fermé" || exit
else
zenity --question --text="Votre dosssier Private est fermé, voulez-vous l'ouvrir ?" && mount.ecryptfs_private && zenity --info --text="Votre dossier Private est maintenant ouvert" || exit
fi
exitDernière modification par soupaloignon (Le 03/12/2008, à 11:26)
Hors ligne
#25 Le 01/05/2009, à 20:41
- axx
Re : [Résolu] Une idée de script, mais pas les compétences pour le faire
Euh, ce script est super mais... il ne demande pas le mot de passe?
J'ai ptêtre mal compris le principe du dossier ~/Private mais je comprenais ça comme un dossier sécurisé dans son home, donc avec un niveau de sécurité supplémentaire (chiffré et demandant un mot de passe pour être monté).
Clairement, il est chiffré, mais si il n'y a pas besoin de mdp pour y accéder (une fois la session ouverte, on est d'accord), on perd pas mal en sécurité.
D'ailleurs, le script appelle ecryptfs-mount-private, hors quand on le lance soi-même (ou par le biais du fichier Access-Your-Private-Data.desktop), il demande le mot de passe. Comment le script peut-il contourner ça? C'est le fait de déclarer la variable $HOME?
- Accueil
- » Forum
- » Développement et programmation
- » [Résolu] Une idée de script, mais pas les compétences pour le faire