version démilitarisée (l'extinction est commentée dans la fonction éteindre)
#!/bin/bash # ---------------------------------------------- nomlogiciel="${0##*/}" # vous pouvez commenter cette ligne echo "lancement $nomlogiciel..." # vous pouvez commenter cette ligne VERSION="0.001" by="kholo 2017" # NOTES DE VERSIONS # # ---------------------------------------------- pasToutDeSuite=6 # temps par defaut avant de reposer la question defautTemps=7 # sans confirmation exécution dans x secondes leTemps=(0 60 120 180 240 300) # liste de choix dans Entry maForm=0 FONCTION="ce script permet d'arrêter une machine avec inter-action par défaut il arrête le système après $defautTemps secondes en cas d'annulation, il ouvrira une fenetre pour choisir le temps avant de se relancer on peut taper off pour arrêter ce script ou un temps en secondes en cas d'échappement le script sera relancé automatiquement au bout de $pasToutDeSuite secondes NB : vous pouvez tester ce script sans modification cette version est sécurisée en ne faisant qu'afficher une boite de dialogue au lieu d'arrêter réellement le PC " # #attention ces functions peuvent éteindre l'ordinateur function Eteindre_avec_Dbus () { dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop } function Eteindre_avec_Systemctl () { # #A partir de 16.04 avec Systemctl (peut être 15.10 voire 15.04) # avec Systemctl systemctl poweroff } function Eteindre () { # Pour activer ce script commenter zenity et choisir une façon d'éteindre zenity --info --text="Eteindre" # Adapter en fonction du système # Eteindre_avec_Dbus & # Eteindre_avec_Systemctl & # sleep 1 # pour laisser le temps au script exit 0 } function form () { zenity --entry --title "Extinction dans $defautTemps secondes" \ --text "Temps en secondes avant extinction \noff pour arrêter ce script" \ --entry-text "${leTemps[@]}" #Si on clique sur le bouton Annuler if [ "$?" -eq 1 ]; then echo -1 exit 0 fi } for (( i=0 ; i<=$defautTemps ; i++ )); do pourcent=$(( i * 100 / $defautTemps )) echo "$pourcent" sleep 1 shift # echanger ces lignes pour la version finale done | zenity --progress --text="$FONCTION" --percentage=0 --auto-close if [ "$?" -eq 1 ]; then maForm="$(form)" fi case $maForm in -1 ) sleep $pasToutDeSuite # temps par defaut avant de reposer la question ./"$0" # se relance lui même exit 0 ;; off ) exit 0 ;; # quitter ce script 0 ) Eteindre ;; * ) sleep $maForm ./"$0" # se relance lui même ;; esac exit 0