#1 Le 28/03/2010, à 16:08
- kikiubuntu
[Résolu][Bash]Problème gksudo et zenity progress
Bonjour.
J'ai commencé il y a quelques jours un script pour pouvoir redémarrer normalement car je devais faire ces manipulations à chaque maj du kernel (cause : low graphic mode). Le script éxécute tout simplement les commandes de la doc, avec demande de reboot du pc à la fin.
Mais j'ai décidé d'y ajouter une interface graphique avec zenity et là ça se complique, étant débutant en shell. Tout fonctionne bien jusqu'à la barre de progression où j'obtiens ces erreurs en terminal :
gksudo: option invalide -- 'f'
gksudo: option non reconnue '--reinstall'
(Ainsi que d'autres du même style, je n'ai pas tout mis.)
Si quelqu'un pourrait m'aider je lui en serait reconnaissant Voici la partie du script avec la barre de progression :
########### BARRE DE PROGRESSION ET EXECUTION DES COMMANDES ###########
(echo "# Réparation des problèmes dans aptitude..." ; gksudo apt-get install -f ; sleep 1; echo "0" ; sleep 1;
echo "# Réinstallation des headers du noyau..." ; gksudo apt-get install --reinstall linux-headers-`uname -r` ; sleep 1; echo "15" ; sleep 1;
echo "# Nettoyage..." ; gksudo apt-get purge nvidia-* ; sleep 1; echo "30" ; sleep 1;
echo "# Nettoyage..." ; gksudo apt-get autoclean ; sleep 1; echo "50" ; sleep 1;
echo "# Réinstallation du pilote..." ; gksudo apt-get install nvidia-glx-96 ; sleep 1) | zenity --progress --title="RMK (éxécution en cours)" --auto-close
Merci
PS : Je compte mettre à disposition le script pour les personnes ayant du matos nvidia et des problèmes de low graphic mode par exemple. Mais pour ça il faudrait que je trouve un moyen d'adapter "sudo apt-get install nvidia-glx-XXX" car XXX dépend de la carte graphique. (C'est glx-96 pour moi.) Le top serait une détection automatique du pilote à réinstaller, mais étant débutant, ce ne sera pas pour tout de suite .
Dernière modification par kikiubuntu (Le 01/04/2010, à 20:48)
GNOME 10.04 Lucid Lynx
Hors ligne
#2 Le 29/03/2010, à 15:54
- kikiubuntu
Re : [Résolu][Bash]Problème gksudo et zenity progress
Up
GNOME 10.04 Lucid Lynx
Hors ligne
#3 Le 30/03/2010, à 17:10
- kikiubuntu
Re : [Résolu][Bash]Problème gksudo et zenity progress
Alors, personne ? Savez-vous également comment récupérer la version du pilote de la commande
glxinfo | grep "OpenGL version"
OpenGL version string: 1.5.8 NVIDIA 96.43.13
(ici c'est 96.43) pour l'utiliser ? (Exemple : Si la version est 96.XX.XX, faire telle commande; si c'est 177.XX.XX faire telle commande.)
GNOME 10.04 Lucid Lynx
Hors ligne
#4 Le 30/03/2010, à 18:34
- azd
Re : [Résolu][Bash]Problème gksudo et zenity progress
Salut,
Pour attraper la version :
glxinfo | grep "OpenGL version" | cut -d ' ' -f6 | cut -d '.' -f1
Fait quelques tests pour savoir si tu as toujours 6 "mots" au lancement de :
glxinfo | grep "OpenGL version"
Sinon il nous faudra trouver un autre moyen.
Cordialement azd.
Quis custodiet ipsos custodes ?
Hors ligne
#5 Le 30/03/2010, à 20:30
- kikiubuntu
Re : [Résolu][Bash]Problème gksudo et zenity progress
Merci ! Apparemment il y a toujours 6 mots donc c'est bon ! Par contre j'ai toujours mon problème avec gksudo : quand j'écris par exemple "gksudo apt-get install -f " dans mon zenity --progress j'ai en erreur "gksudo: option invalide -- 'f' ". C'est comme s'il comprenait pas que gksudo c'est pour avoir les droits d'exécution (car là j'ai l'impression qu'il essaye de faire l'option -f sur gksudo ). D'ailleurs le texte est coloré bizarrement : seul le "install" est marron alors que le "gksudo apt-get" est noir.
GNOME 10.04 Lucid Lynx
Hors ligne
#6 Le 30/03/2010, à 20:32
- azd
Re : [Résolu][Bash]Problème gksudo et zenity progress
ah je suis désolé mais la dessus je ne peux pas t'aider .
Quis custodiet ipsos custodes ?
Hors ligne
#7 Le 30/03/2010, à 21:48
- kikiubuntu
Re : [Résolu][Bash]Problème gksudo et zenity progress
En fait la ligne
gksudo apt-get install -f
est fausse même toute seule. Par contre cela fonctionne avec sudo à la place de gksudo... Je suis perdu...Comment demander son mot de passe à l'utilisateur graphiquement si gksudo ne fonctionne pas avec ces commandes ?
Dernière modification par kikiubuntu (Le 31/03/2010, à 18:32)
GNOME 10.04 Lucid Lynx
Hors ligne
#8 Le 30/03/2010, à 21:54
- azd
Re : [Résolu][Bash]Problème gksudo et zenity progress
En faite ton -f doit être un argument pour apt-get mais ta commande le prend comme argument pour gksudo ? si j'ai bien compris...
Quis custodiet ipsos custodes ?
Hors ligne
#9 Le 30/03/2010, à 21:57
- azd
Re : [Résolu][Bash]Problème gksudo et zenity progress
Essaies ça :
gksudo "apt-get install -f"
Cordialement azd.
Dernière modification par azd (Le 30/03/2010, à 22:05)
Quis custodiet ipsos custodes ?
Hors ligne
#10 Le 31/03/2010, à 10:19
- frafa
Re : [Résolu][Bash]Problème gksudo et zenity progress
Bonjour,
vire tous tes gksudo,
et tu lance ton script par gksudo ".../tonscript.sh"
Hors ligne
#11 Le 01/04/2010, à 18:44
- kikiubuntu
Re : [Résolu][Bash]Problème gksudo et zenity progress
@frafa Cela pourrait fonctionner mais mon but est surtout de pouvoir lancer le programme par un simple double click dessus. ^^
Sinon merci azd, cela fonctionne...sauf pour
gksudo "apt-get install --reinstall linux-headers-`uname -r`"
Quand je lance cette commande en terminal (et que je fais "O" pour continuer) rien ne se passe :
kikiubuntu@fixe:~$ gksudo "apt-get install --reinstall linux-headers-`uname -r`"Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 1 réinstallés, 0 à enlever et 1 non mis à jour.
Il est nécessaire de prendre 0o/683ko dans les archives.
Après cette opération, 0o d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer [O/n] ? o
Alors que cela fonctionne avec sudo.
NB : Le 0o/683ko est bizarre...
GNOME 10.04 Lucid Lynx
Hors ligne
#12 Le 01/04/2010, à 19:13
- frafa
Re : [Résolu][Bash]Problème gksudo et zenity progress
ben tu met ca en debut de ton sctipt et tu vire les autres gksudo...
#!/bin/bash
if [ ! "$SUDO_USER" ]; then
gksudo -k "$0"
exit 0
fi
Hors ligne
#13 Le 01/04/2010, à 19:50
- azd
Re : [Résolu][Bash]Problème gksudo et zenity progress
Salut à vous,
en effet frafa c'est une bonne idée et c'est plus propre !
Et puis j'avoue ne pas avoir trouver d'autre solution pour ta commande kikiubuntu...:rolleyes:
En plus ça à le mérite d'accélérer ton programme ! Mais (oui il y a toujours un mais ) sache que le reste de ton code est exécuté en super utilisateur alors pour tes tests fait attention à ce que tu fais !
Cordialement azd.
Quis custodiet ipsos custodes ?
Hors ligne
#14 Le 01/04/2010, à 20:46
- kikiubuntu
Re : [Résolu][Bash]Problème gksudo et zenity progress
Merci à tous les deux pour votre aide. Le programme fonctionne bien désormais. Le fait que le reste du code soit exécuté en super utilisateur ne me pose pas de problème car de toute façon il faut les droits pour exécuter les commandes, et elles ne sont pas vraiment dangereuses, ce sont celles de la doc. Il ne me reste plus qu'à intégrer des messages d'erreurs dans le script et à mettre la détection du pilote automatique et le script sera fini en version 1. Par contre pour les messages d'erreurs je vois pas trop comment les mettre mais bon je vais trouver. On peut considérer que c'est résolu. Merci encore.
Dernière modification par kikiubuntu (Le 01/04/2010, à 20:55)
GNOME 10.04 Lucid Lynx
Hors ligne
#15 Le 11/01/2012, à 23:21
- lesebas
Re : [Résolu][Bash]Problème gksudo et zenity progress
Salut à tous je déterre ce post car j'ai le même problème avec un script de sauvegarde avec rdiff-backup (piqué ici)
Je veux lancer la sauvegarde en sudo pour m'affranchir des droits liés au différents users... mais gksudo n'aime pas:
nice -n 19 gksudo rdiff-backup --remove-older-than 1M --force
il prend --remove-older-than pour une option de gksudo.
J'utilise donc le bout de script:
if [ ! "$SUDO_USER" ]; then
gksudo -k "$0"
exit 0
fi
Mais pas au début de mon script car je teste la date de dernière sauvegarde et demande une confirmation à l'utilisateur, donc la boucle if est incluse dans d'autre boucles. Le seul problème est qu'aprés avoir rentré mon mdp le script revient au début...
Ci-après le script complet:
echo "Nous sommmes le " $todayDate
if (test $nextUpdateDate -le $todayDate)
then
#Date dépassée => on propose de faire la sauvegarde
if zenity --question --text="Faire la sauvegarde automatique maintenant ? (Brancher le Disque Externe auparavant)"
then
logFile="/home/sebastien/Sauvegarde/logs/log_sauvegarde_"$( date '+%Y')-$( date '+%m')-$( date '+%d')
echo "Sauvegarde du " $( date '+%d')-$( date '+%m')-$( date '+%Y')\\r\\r"Dossiers Sauvegardés : \\r"$directoryList\\r\\r"Début de la sauvegarde à "$(date '+%T')\\n >> $logFile
#verifier la presence du dossier de sauvegarde
if test -d $backupDirectory
then
if [ ! "$SUDO_USER" ]
then
gksudo -k "$0"
exit 0
fi
#sauvegarde à faire ici !!!
for i in $directoryList; do
nice -n 19 rdiff-backup $origDirectory$i $backupDirectory$i && nice -n 19 rdiff-backup --remove-older-than 1M --force $backupDirectory$i 2>&1 >> $logFile
done
zenity --info --text="La sauvegarde est terminée."
#mise à jour du fichier de conf avec la date de la prochaine mise à jour
echo $(date '+%Y%m%d' --date '7 days') > $configFile
echo \\r"Fin de la suvegarde à "$(date '+%T')\\r"La sauvegarde s'est bien terminée" >> $logFile
else
zenity --error --text="Dossier de sauvegarde non trouvé."
echo \\r"ERREUR LORS DE LA SAUVEGARDE!!! Dossier de sauvegarde non trouvé" >> $logFile
fi
else
zenity --info --text="La mise à jour sera à nouveau proposée au prochain démarrage."
fi
else
echo "rien a faire"
fi
PS: j'ai quelques notions de programation mais je suis loin d'être un crack ... j'ai pas bien compris l'intéret du
exit 0
Dernière modification par lesebas (Le 11/01/2012, à 23:23)
Seb
LMDE
Hors ligne
#16 Le 12/01/2012, à 22:39
- lesebas
Re : [Résolu][Bash]Problème gksudo et zenity progress
Salut,
Je m'en suit finalement sorti en coupant mon script en 2. J'ai isolé la partie à lancer en root dans un script à part que j'execute en root avec la commande:
if [ ! "$SUDO_USER" ]; then
gksudo -k "$0"
exit 0
fi
Il est appellé par un script de test qui lui ne nécéssite pas les droits root. Du coup si à l'issue du test il n'y a pas de sauvegarde à faire c'est transparent pour l'utilisateur, par contre quand la sauvegarde se lance (et seulement dans ce cas) ca demande le mdp root.
Seb
LMDE
Hors ligne