#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
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
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
Pour le menu, j'avais déjà trouver ça 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
#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 merci de votre aide, qui confirme mes choix
je repart coder
#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
Merci infiniment de ton script, je vais décoder tout ça
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
En tout ça merci encore à vos deux
Vive l'OpenSource
#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)
- console texte
- console + ncurses (dialog)
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
Maintenant c'est chose faite
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
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