Utilisation sudo dans script shell
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Utilisation sudo dans script shell



  1. #1
    loftyramitsu

    Post Utilisation sudo dans script shell


    ------

    Bonsoir,

    Il y a quelque jour, j'ai voulu créer un réveil pour linux en script shell. C'est mon premier vrai script, il n'est donc sûrement pas très optimisé :
    Code:
    #!/bin/sh
    
    #On demande l'heure du réveil
    
    heureCorrecte=False
    minuteCorrecte=False
    if heureReveil=$(zenity --entry --title="À quelle heure sera le réveil ?" \
    	--text="Heure(s) :" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \
    	17 18 19 20 21 22 23 )
    	then
    		heure=$heureReveil
    		for elt in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 \
    			15 16 17 18 19 20 21 22 23
    		do
    			if [ $heure = $elt ]
    			then
    				heureCorrecte=True
    			fi
    		done
    
    fi
    
    if minuteReveil=$(zenity --entry --title="À quelle heure sera le réveil ?" \
            --text="Minute(s) :" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \
            17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 \
    	40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59)
            then
                    minute=$minuteReveil
                    for elt in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \
            17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 \
            40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
                    do      
                            if [ $minute = $elt ]
                            then
                                    minuteCorrecte=True
                            fi
                    done    
                    
    fi
    
    if [ $minuteCorrecte != "True" ] || [ $heureCorrecte != "True" ]
    then
    	zenity --info --text="<span color=\"red\">L'heure entrée n'est pas \
    		correcte</span>"
    	exit
    fi
    
    
    
    #On demande le jour du réveil
    jour=`zenity --entry --title="Jour" \
           	--text="Quel jour voulez vous vous réveiller ?" \
    	"Demain" "Aujourd'hui"`
    if [ $jour ]
    then
    	if [ $jour != "Demain" ] && [ $jour != "Aujourd'hui" ]
    	then
            	zenity --info --text "Non !!"
    		exit
    	fi
    else 
    	zenity --info --text "Il fallait entrer un jour !"
    	exit
    fi
    if [ $jour = "Demain" ]
    then
    	jourExecution="tomorrow"
    else
    	jourExecution="today"
    fi
    
    
    # On demande le répertoire de musique
    
    musiqueDir="/home/loftyramitsu/Musique"
    
    zenity --question \
    	--title "Dossier" \
    	--text "Voulez vous changer le répertoire de musique ? Actuellement : <b>$musiqueDir</b>"
    if [ $? = 0 ]
    then
    	musiqueDir=$(zenity --file-selection \
    		--title="Choisissez le dossier de musique" \
    		--directory);
    fi
    
    
    
    # On demande si on peut lancer le réveil
    
    zenity --question \
    	--title="Confirmation" \
    	--text "Lancer le réveil maintenant ? \
           	(<i>L'ordinateur va passer en veille</i>)"
    if [ $? = 0 ]
    then
    	sudo rtcwake -m mem -l -t $(date +%s -d "$jourExecution $heure:$minute") \
    		&& mocp -S && mocp -c && mocp -o s && mocp -a $musiqueDir \
    		&& mocp -p
    else
    	zenity --info --text "Bon, tant pis ..."
    	exit
    fi
    zenity --info --text "Arrêter le réveil ?"
    mocp -x
    exit
    Le code fonctionne bien si on le lance dans un terminal, mais ce n'était pas le but en utilisant zenity, je voulais créer un lanceur sur le bureau ( linux mint cinnamon ). Mais le sudo m'empêche exécuter la partie la plus importante du script. Il faudrait donc soit que je demande le mot de passe à chaque fois avec zenity, soit, si c'est possible au niveau sécurité, de ne pas demander le mdp. Dans les deux cas je ne sais pas comment faire, et je n'ai rien trouvé de satisfaisant sur internet, donc si vous avez des idées, je suis preneur...

    Merci d'avance.

    -----

  2. #2
    pm42

    Re : Utilisation sudo dans script shell

    Une solution simple est de mettre le bit s sur rtcwake de façon à ce qu'il ait les droits root à l'exécution sans avoir à utiliser sudo.
    C'est un peu critiquable parce que cela permet à n'importe quel utilisateur de mettre le système en veille mais sur une machine perso, ce n'est pas grave.

    Tu peux faire une rechercher sur "setuid" pour savoir comme marche le bit s.

  3. #3
    raymolk

    Re : Utilisation sudo dans script shell

    Sinon tu t'ajoutes les droits pour cette commande dans /etc/sudoers.
    Voir man sudoers, et peut-être le wiki de ta distribution (ou d'une autre, peu importe ici) pour des exemples de syntaxes valides.

  4. #4
    pm42

    Re : Utilisation sudo dans script shell

    Citation Envoyé par raymolk Voir le message
    Sinon tu t'ajoutes les droits pour cette commande dans /etc/sudoers.
    Et c'est sans doute une meilleure solution en effet.

  5. A voir en vidéo sur Futura
  6. #5
    loftyramitsu

    Re : Utilisation sudo dans script shell

    Merci beaucoup,
    Ca fonctionne nickel (sudoers) !

Discussions similaires

  1. Script Shell
    Par Sorye-ge-ton dans le forum Programmation et langages, Algorithmique
    Réponses: 19
    Dernier message: 22/07/2015, 16h22
  2. script shell
    Par invite97b21456 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 22/12/2010, 14h22
  3. Programmation script shell ksh unix
    Par invite3ac0dbd7 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 10/10/2009, 16h10
  4. shell ou script linux
    Par invited9f05e20 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 26/03/2009, 07h44
  5. Ecriture d'un script shell
    Par invite1d93df33 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 28/09/2008, 20h44