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 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 smile 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 wink

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 big_smile.

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 hmm


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. wink

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 ! smile 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 hmm ). 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 hmm.


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... roll 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`"

hmm
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 ! big_smile
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 tongue) 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. smile 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. tongue 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 lol ... 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. big_smile


Seb

LMDE

Hors ligne