#1 Le 10/01/2018, à 12:45
- thewhitecracker
Menu d'applications en ligne de commande ?
Bonjour à tous, ami(e)s Tuxiens et Tuxiennes
J'utilise énormément le Terminal je fais tout dessus, sauf ce qui me requiert vraiment du graphique.
Le fait de tout faire en ligne de commande, moi qui execute énormement de vbot pour du "pentest", etc... me permet d'économiser la puissance de ma machine.
Cependant, j'aimerais me débarasser du menu d'applications, moi qui dispose de centaines de programmes (entre autres ceux de Kali), c'est un peu difficile de m'y retrouver dans tout ce foutoir, en effet je peut pas tout savoir par coeur et pas envie à chaque fois de devoir ouvrir un fichier avec la liste sous nano, comme je fais déjà avec ceux qui ne possédent pas d'entrée dans le menu pour m'y retrouver.
Après minitieuse recherche, j'ai pas trouvé de lanceur d'applications sous forme de menu pour le terminal Si quelqu'un connais quelques chsoe de la sorte dont je cherche, je suis preneur !
James
#2 Le 10/01/2018, à 14:48
- MicP
Re : Menu d'applications en ligne de commande ?
Bonjour thewhitecracker
Au cas où…
tu pourrais apprendre à utiliser certaines fonctionnalités de l'interpréteur de commandes
comme par exemple history
il y a aussi les raccourcis claviers
=======
Pour faire un menu, il faut d'abord définir quelles commandes seront lancées par ce menu
et les différents contextes dans lesquels ces commandes seront lancées et par quel moyen.
Sinon, on va te proposer un script,
et ensuite, il va falloir le modifier pour l'adapter au fur et à mesure de tes demandes,
pour finir par te proposer un script avec tellement de modifications
qu'il vaudra mieux finalement en refaire un plus adapté à l'ensemble de tes demandes.
=======
Pour faire une analogie, une histoire vécue :
Un de mes oncles me racontait que sa femme lui avait demandé par téléphone
de repeindre un mur d'un de leurs appartements en gris.
Je lui ai dit "Bein là ! t'es pas dans la merde..."
Sur le coup, il n'a pas compris.
Et ça n'a pas raté : après une semaine de travail, il me raconte que sa femme lui a dit :
"Ah mais je pensais plutôt à un gris tirant un peu plus sur le bleu…"
Et heureusement pour lui, elle a ajouté dans la même semaine :
"Il vaudrait mieux prendre un gris satiné, parce que mat, ça ne va pas bien avec ces meubles…"
Je ne l'ai pas revu depuis, donc, je ne sais pas s'il a bien fini de poser toutes ses couches de peinture,
ou (s'il est toujours marié avec elle) s'il a eu la sagesse de déléguer cette tâche.
Dernière modification par MicP (Le 10/01/2018, à 15:08)
Hors ligne
#3 Le 10/01/2018, à 16:46
- thewhitecracker
Re : Menu d'applications en ligne de commande ?
Bonjour MicP,
Merci pour votre réponse.
Je connais très bien la commande history et les raccourcis clavier, ce que je recherche, c'est un menu, similaire au mode graphique pour terminal, par exemple le listing des programmes installée et par catégories.
Le but étant de ne pas "oublier" les programmes peu utilisé, voir jamais mais qui pourrais me servir plus tard.
James
#4 Le 10/01/2018, à 17:12
- kholo
Re : Menu d'applications en ligne de commande ?
salut,
voici le modèle dont je me sert
(à mettre dans modèle ; pour moi "pgm bash_list (2017).sh" )
#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION=""
VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
#
# ----------------------------------------------
echo "lancement $nomlogiciel..."
# echo "chargement ligne $LINENO"
# set -o xtrace
# ******************************************************************
# pour ouvrir un navigateur de fichier (debuggage)
# ******************************************************************
# nautilus "$PWD" ; exit 0
# ******************************************************************
# fixe la taille de la fenetre
# ******************************************************************
/usr/bin/resize -s 31 130 > /dev/null
reset > /dev/null
# ******************************************************************
# DECLARATION DES COULEURS
# ******************************************************************
# explications
# echo -e "\033[31mHello\033[00m"
# On écrit \033, on met un crochet ouvrant [,
# puis on met le code de la couleur choisie (ici, 31 signifie rouge)
# et on finit avec un m.
# On affiche notre texte,
# ici Hello, puis on remet la couleur à noir (\033[00m),
# sinon le reste sera écrit en rouge aussi. :)
#
# exemples complexes
# enNoir='\033[1;30;40m'
# enRouge='\033[1;31;40m'
# enVert='\033[0;32;40m'
# enJaune='\033[1;33;40m'
fdNoir='\033[40m'
fdRouge='\033[41m'
fdVert='\033[42m'
fdJaune='\033[43m'
fdBleu='\033[44m'
fdRose='\033[45m'
fdCyan='\033[46m'
fdGris='\033[47m'
# fdDefaut='\033[49m'
enNoir='\033[30m'
enRouge='\033[31m'
enVert='\033[32m'
enJaune='\033[33m'
enBleu='\033[34m'
enRose='\033[35m'
enCyan='\033[36m'
enGris='\033[37m'
# enDefaut='\033[39m'
enGras='\033[1m'
enSouligner='\033[4m'
enClignotant='\033[5m'
enSurligner='\033[7m'
encache='\033[8m'
enDefaut='\033[0m'
# ******************************************************************
# JOURNAL
# ******************************************************************
fichier_log="${nomlogiciel}.log"
> "${fichier_log}"; # remet le journal à zéro
journal () { echo -e "$@" >> "${fichier_log}" ; }
journal "*******************initialisation*******************"
journal "chargement"
# ******************************************************************
# FONCTIONS POUR LA LISTE DE CHOIX
# ******************************************************************
pause () { read -p 'Appuyer sur [Enter] pour contnuer...' ; }
on_clear_terminal () {
# echo -e "${enDefaut}"
reset > /dev/null
}
afficherMenu () {
echo -e "${enJaune}${enGras}"
echo -e "______________________________"
echo -e "Un titre."
echo -e "Ce module crée une liste de choix"
echo -e ""
echo -e "Faire un choix dans :"
echo -e "______________________________"
echo -e "${enJaune} 1. ${enVert}voir"
echo -e "${enJaune} 2. ${enVert}ouvrir"
echo -e "${enJaune} 3. ${enVert}enregistrer"
echo -e "${enJaune} 4. ${enVert}enregistrer-sous"
echo -e "${enJaune} 5. ${enVert}fonction test"
echo -e "${enJaune}______________________________"
echo -e "${enRouge} q. ${enVert}Quitter"
echo -e "${enVert}______________________________\n"
echo -en "${enGris}Votre choix : "
}
parserChoix () {
case "$choix" in
0) ;; # ne fait rien !
1) action 1 ;;
2) action "$choix" ;;
3) action "$choix" ;;
4) action "$choix" ;;
5) fonction_test ;;
q|Q) _quitter ;;
*) ;;
esac
}
_quitter () {
journal "_quitter"
# mettre ici tout ce qui sera nescessaire à la bonne fermeture
exit 0
}
# ******************************************************************
# METTRE TOUTES LES FONCTIONS ICI
# ******************************************************************
action () {
echo -e "${enRouge}${enGras}vous avez choisi action $1 \n ... choisissez '5' !"
pause
}
fonction_test () {
echo -e "${enJaune}${enGras}$(date)\n${enGris}On peut mettre ce que l'on veut ici"
pause
}
# ******************************************************************
# FONCTION PRINCIPALE
# ******************************************************************
_main () {
on_clear_terminal
afficherMenu
# saisie du choix
read -r -n 1 choix # si les choix sont sur 1 caractère
# read -r choix # si les choix sont sur 2 caractères
on_clear_terminal
parserChoix
_main
}
_main
exit 0
il faut mettre ce fichier dans "Modèles" et le rendre exécutable
puis, à chaque création de nouveau script, tu as un un squelette à reprendre...
un peu la même chose en utilisant zenity
#!/bin/bash
# ----------------------------------------------
nomlogiciel="${0##*/}"
FONCTION=""
VERSION="alpha"
# NOTES DE VERSIONS
# ----------------------------------------------
#
# ----------------------------------------------
echo "lancement $nomlogiciel..."
# echo "chargement ligne $LINENO"
# set -o xtrace
_journal () {
fichier_log="$nomlogiciel.log"
if [ -f "$fichier_log" ];
then
echo "..."
else
echo "Création du fichier de log : $fichier_log"
touch "$fichier_log";
fi
# tail
}
echo "ouverture du journal"
_journal
journal () {
echo "$@" | tee -a "$fichier_log" >/dev/null;
}
journal "*******************initialisation*******************"
journal "VARIABLES"
texte[0]="Choix 0"
texte[1]="Choix 1"
texte[2]="Choix 2"
texte[3]="Choix 3"
texte[4]="Choix 4"
texte[5]="Choix 5"
texte[6]="Choix 6"
texte[7]="Choix 7"
texte[8]="Choix 8"
texte[9]="Choix 9"
valeur[0]="Valeur 0"
valeur[1]="Valeur 1"
valeur[2]="Valeur 2"
valeur[3]="Valeur 3"
valeur[4]="Valeur 4"
valeur[5]="Valeur 5"
valeur[6]="Valeur 6"
valeur[7]="Valeur 7"
valeur[8]="Valeur 8"
valeur[9]="double-cliquez ici !"
_quitter () {
journal "_quitter"
# mettre ici tout ce qui sera nescessaire à la bonne fermeture
exit 0
}
frm_principale () {
journal "*******************frm_principale*******************"
LAQUESTION="
---------------------------------------------------------------------
Ce module crée une liste de choix
Tout à faire - <b>pas encore codé</b>"
zenity --list --width=600 --height=450 --text="$LAQUESTION" \
--ok-label="Sélectionner" \
--cancel-label="quitter" \
--hide-column 1 --column "" --column "${texte[0]}" --column "${valeur[0]}" \
1 "${texte[1]}" "${valeur[1]}" \
2 "${texte[2]}" "${valeur[2]}" \
0 "" "on peut facilement mettre des blancs" \
3 "${texte[3]}" "${valeur[3]}" \
4 "${texte[4]}" "${valeur[4]}" \
5 "${texte[5]}" "${valeur[5]}" \
6 "${texte[6]}" "${valeur[6]}" \
7 "${texte[7]}" "${valeur[7]}" \
0 "" "" \
8 "${texte[8]}" "${valeur[8]}" \
9 "${texte[9]}" "${valeur[9]}" ;
}
frm_principale_parser () {
journal "*******************frm_principale_parser*******************"
journal "frm_principale_parser : $1"
case $1 in
1) action 1 ;;
2) action 2 ;;
3) action 3 ;;
4) action 4 ;;
5) action 5 ;;
6) action 6 ;;
7) action 7 ;;
8) action 8 ;;
9)
fonction_test
;;
0) ;; # rien à faire
*)
quitter=1
_quitter ;;
esac
}
action () {
zenity --info --text="vous avez choisi action $1 \n ... choisissez le 9 !"
}
fonction_test () {
message="$(date)
On peut mettre ce que l'on veut ici"
echo "$message"
zenity --info --text="$message"
}
_main () {
journal "_main"
menuchoice=$(frm_principale);
frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1
if [[ $quitter -ne 1 ]] ; then
# on boucle _main tant que quitter est différent de 1
_main
fi
}
# Programme principale
_main
exit 0
...
Hors ligne