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 08/01/2012, à 20:31

sonn2

[resolu] menu et droit dans un script shell

Bonsoir,

J'aimerais faire un menu dans mon script shell mais j'ignore comment et google n'as pas vraiment aider, est-ce une limite du language?
Comment savoir si à l'éxécution, le script as les droits root ?

Vous avez des idées?
merci de votre aide

Dernière modification par sonn2 (Le 08/01/2012, à 21:50)

#2 Le 08/01/2012, à 20:55

sputnick

Re : [resolu] menu et droit dans un script shell

Salut :

1)

select item in foo bar base; do break; done

2)

if ((EUID ==0)); then echo "on est root"; else echo "on est PAS root"; fi

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#3 Le 08/01/2012, à 21:03

sputnick

Re : [resolu] menu et droit dans un script shell

sonn2 a écrit :

J'aimerais faire un menu dans mon script shell mais j'ignore comment et google n'as pas vraiment aider, est-ce une limite du language?

T'a essayé combien de temps google ? parce que le premier site de de la recherche t'aurait renseigné : http://google.fr/?q=bash+%22creer+des+menus%22


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#4 Le 08/01/2012, à 21:20

sonn2

Re : [resolu] menu et droit dans un script shell

Merci de ta réponse smile
J'avais trouver des choses semblables, cependant le script que j'avais trouver pour le test de root ne marchais pas si on se subtituer à lui, alors que le tien marche big_smile
Pour le menu, j'avais déjà trouver ça tongue mais il n'existe rien d'autre pour les menus ? Pour éviter de taper un caractère? genre comme dans les bios?

ps: je suis pas un lamer, je cherche avant de demander wink

#5 Le 08/01/2012, à 21:40

loubrix

Re : [resolu] menu et droit dans un script shell

tu peux faire des menus sympas (et plein d'autres choses) avec Dialog aussi (à installer, puis voir man dialog), et ça ressemble aux menus des bios...

Dernière modification par loubrix (Le 08/01/2012, à 21:41)


Asus X50VL - Ubuntu 12.04 AMD64
HP G62 - Ubuntu 12.10 AMD64
Fujitsu-Siemens Amilo EL - Lubuntu 12.04 i686
Manjaro, une rolling pour débutants

Hors ligne

#6 Le 08/01/2012, à 21:50

sonn2

Re : [resolu] menu et droit dans un script shell

^^ j'avais aussi trouver ça, mais bon... j'esperer pouvoir trouver un truc plus compatible ^^ tant pis smile merci de votre aide, qui confirme mes choix big_smile
je repart coder wink

#7 Le 08/01/2012, à 22:03

loubrix

Re : [resolu] menu et droit dans un script shell

compatible avec quoi ?
si je t'ai proposé dialog, c'est que c'est très simple à utiliser, et que bien que ça tourne dans un terminal, ça accepte le clic...
tiens, cadeau, un truc que j'avais fait pour Arch, pour installer des paquets sans connaitre la ligne de commande:

#!/bin/bash
#
# Written by Loubrix under the WTFPL, without any warranty of any kind.


case "$LANG" in
 fr*)
  TITLE="Gestion des paquets Arch"
  _yes="Oui"
  _no="Non"
  _cancel="Annuler"
  _continue_label="Continuer"
  _return_label="Retour"
  _exit="Sortir"
  _welcomess="Bienvenue dans le gestionnaire de paquets d'Arch.\
  Il vous aidera à gérer les logiciels jusqu'à ce que vous soyez à l'aise avec Pacman et Yaourt.\
  Cet assistant indique les commandes qu'il exécute, vous apprenant comment gérer vos logiciels."
  _showinst="Voir les paquets installés"
  _doupd="Mettre à jour le système"
  _instpkg="Installer un paquet"
  _rempkg="Enlever un paquet"
  _quit="Sortir de la gestion des paquets"
  _chooseaction="Que voulez-vous faire ?"
  _questionquit="Voulez-vous quitter ?"
  _questionrempkg="Quel paquet voulez-vous enlever ?\nCommande : yaourt -Rs <nom du paquet>"
  _questionupd="Voulez-vous mettre à jour le système ? N'oubliez pas de vérifier les mises à jour\
  cassées sur www.archlinux.org\nCommande : yaourt -Su"
  _questioninstpkg="Quel paquet voulez-vous installer ?\nRecherchez par mot-clé dans les noms\net\
  les descriptions des logiciels,\net choisissez dans la liste proposée.\nCommande : yaourt <mot-clé>"
  _questionshowinst="Voulez-vous voir les paquets installés ?\nCommande : yaourt -Qs"
  _syncrepo="Synchroniser les dépôts logiciels"
  _questionsyncrepo="Voulez-vous synchroniser\nles dépôts logiciels ?\nCommande : yaourt -Sy"
  _pressenter="Appuyez sur ENTER pour afficher le menu"
  _questionrepo="Voulez-vous éditer le fichier des miroirs ?\nVous pouvez activer\
  (en enlevant le #) les miroirs proches de chez vous.\nSi vous utilisez CTKArch, pensez\
  à désactiver le dépôt ARM pour passer en mise à jour continue.\nQuand vous avez fini,\
  appuyez sur ESC-ESC-X pour sauvegarder et quitter l'éditeur."
  _editrepo="Éditer la liste des miroirs"
  _stats="Statistiques"
  _questionstats="Ceci vous donnera des informations sur les paquets installés, les dépôts,\
  et d'autres données utiles (orphelins, paquets locaux...) ; afficher les statistiques?\nCommande :\
  yaourt --stats"

 ;;
 *)
  TITLE="Arch Package Management"
  _yes="Yes"
  _no="No"
  _cancel="Cancel"
  _continue_label="Continue"
  _return_label="Back"
  _exit="Exit"
  _welcomess="Welcome to the Arch package management.\
  This will help you to manage software packages until you are at ease with Pacman and Yaourt.\
  This assistant tells you which command it runs, teaching you how to manage your software."
  _showinst="See installed packages"
  _doupd="Update system"
  _instpkg="Install package"
  _rempkg="Remove package"
  _quit="Exit package management"
  _chooseaction="What do you want to do?"
  _questionquit="Do you want to exit?"
  _questionrempkg="Which package do yo want to remove?\nCommand: yaourt -Rs <package name>"
  _questionupd="Do you want to upgrade the system? Don't forget to look for broken updates\
  on www.archlinux.org\nCommand: yaourt -Su"
  _questioninstpkg="Which package do you want to install?\nSearch by keyword in names\
  and\ndescriptions of software,\nand choose in the resulting list.\nCommand: yaourt <keyword>"
  _questionshowinst="Do you want to see installed packages?\nCommand: yaourt -Qs"
  _syncrepo="Synchronize software repositories"
  _questionsyncrepo="Do you want to synchronize\nsoftware repositories?\nCommand: yaourt -Sy"
  _pressenter="Press ENTER to return to the menu"
  _questionrepo="Do you want to edit the mirrorlist file? You can activate (removing the #)\
  mirrors near to you.\nIf you use CTKArch, remember to remove the ARM repo to use rolling\
  release updates.\nWhen done, press ESC-ESC-X to save and exit the editor."
  _editrepo="Edit mirrors list"
  _stats="statistics"
  _questionstats="this will give you some informations about installed packages, repositories,\
  and other usefull data (orphans, local packages...); display statistics?"

 ;;
esac

DIALOG() {
    dialog --title "$TITLE" \
    --yes-label "$_yes" --no-label "$_no" --cancel-label "$_cancel" --exit-label "$_exit" \
    "$@"
    }
  
ACTION="/tmp/ctkptemp"

# comands to run on menu
REPO() {
    if DIALOG --yesno "${_questionrepo}" 0 0; then
       clear && su -c "nano /etc/pacman.d/mirrorlist"
    fi
    }
 
SYNCREPO() {
    if DIALOG --yesno "${_questionsyncrepo}" 0 0; then
       clear && yaourt -Sy
       echo ""
       echo "${_pressenter}"
       read -p "$*"
    fi
    }
     
SHOWINST() {
    if DIALOG --yesno "${_questionshowinst}" 0 0; then
       clear && yaourt -Qs
       echo ""
       echo "${_pressenter}"
       read -p "$*"
    fi
    }
     
DOUPD() {
    if DIALOG --yesno "${_questionupd}" 0 0; then
       clear && yaourt -Syu
       echo ""
       echo "${_pressenter}"
       read -p "$*"
    fi
    }
     
INSTPKG() {
    if DIALOG --inputbox "${_questioninstpkg}" 0 0 2>$ACTION; then
       clear && yaourt  $(cat $ACTION)
       echo ""
       echo "${_pressenter}"
       read -p "$*"
    fi
    }
      
REMPKG() { 
    if DIALOG --inputbox "${_questionrempkg}" 0 0 2>$ACTION; then
       clear && yaourt -Rs $(cat $ACTION)
       echo ""
       echo "${_pressenter}"
       read -p "$*"
    fi
    }
    
STATS() {
    if DIALOG --yesno "${_questionstats}" 0 0; then
       clear && yaourt --stats
       echo ""
       echo "${_pressenter}"
       read -p "$*"
    fi
    }
     
QUIT() {
    if DIALOG --yesno "${_questionquit}" 6 40;then
       clear && exit 0
    fi
    }

#Main menu
MAINMENU() {
    DIALOG --nocancel --menu "${_chooseaction}" 16 55 8 \
     "1" "${_editrepo}" \
     "2" "${_syncrepo}" \
     "3" "${_doupd}" \
     "4" "${_instpkg}" \
     "5" "${_showinst}" \
     "6" "${_rempkg}" \
     "7" "${_stats}" \
     "8" "${_quit}" 2>$ACTION
    case $(cat $ACTION) in
        "1")
         REPO ;;
        "2")
         SYNCREPO ;;
        "3")
         DOUPD ;;
        "4")
         INSTPKG ;;
        "5")
         SHOWINST ;;
        "6")
         REMPKG ;;
        "7")
     STATS ;;
    "8")
         QUIT ;;

    esac  
    }
     
#########################
## begin execution##

DIALOG --msgbox "${_welcomess}" 0 0

while true; do
    MAINMENU
done

exit 0

c'est pas Synaptic, mais ça permet de voir ce qu'on peut faire avec dialog; essaie le tu verras (bon y aura quelques messages d'erreur vu que t'es pas sous Arch, mais il s'affichera, et tu pourras cliquer sur "quitter").

Dernière modification par loubrix (Le 08/01/2012, à 22:04)


Asus X50VL - Ubuntu 12.04 AMD64
HP G62 - Ubuntu 12.10 AMD64
Fujitsu-Siemens Amilo EL - Lubuntu 12.04 i686
Manjaro, une rolling pour débutants

Hors ligne

#8 Le 08/01/2012, à 22:22

sonn2

Re : [resolu] menu et droit dans un script shell

Je parlais d'autres distributions sans pour autant installer des trucs wink
Merci infiniment de ton script, je vais décoder tout ça tongue

Je résume si des personnes intéressés tombe sur ce topic
Pour faire une meuilleur interaction avec un terminal (console) utiliser dialog (non installer par défault sur Ubuntu)
Pour faire de véritables applications graphiques sans passer par la console utiliser zenity (installer par défault sur Ubuntu) mais qui semble plus complexe.

Il se fait tard, je regarderais bien tout ça demain smile
En tout ça merci encore à vos deux tongue

Vive l'OpenSource wink

#9 Le 08/01/2012, à 22:24

sputnick

Re : [resolu] menu et droit dans un script shell

Tu souhaite quel genre de menus ?

- gtk/qt (zenity, kdialog) http://ompldr.org/vYzU0dg.png


- console texte http://ompldr.org/vYzU1aw.png


- console + ncurses (dialog) http://ompldr.org/vYzU1aA.png

Dernière modification par sputnick (Le 08/01/2012, à 22:28)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#10 Le 08/01/2012, à 22:37

sonn2

Re : [resolu] menu et droit dans un script shell

J'aurais envie de dire les trois pour au moins savoir comment les faire wink
Maintenant c'est chose faite smile

Encore un petit truc que j'ai pas cherché mais bon... si vous pouvez me filez la solution direct, je refuse pas ^^
Je fait un gros script général avec toutes les manipulations habituelles et j'aimerais mettre un mot de passe tongue
Comment on fait pour obtenir le md5 (ou sha1 ou autre...) d'une variable en shell ?

#11 Le 08/01/2012, à 23:09

sputnick

Re : [resolu] menu et droit dans un script shell

Hop :


$ var=azerty
$ read md5 x < <(md5sum <<< "$var")
$ echo $md5
35dfcb74b0217ac005c3a209e05e7f25
$

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne