Contenu | Rechercher | Menus

Annonce

Toute l'équipe d'ubuntu-fr vous souhaite un joyeux Noël et une bonne et heureuse année 2018.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

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.

#1 Le 10/01/2018, à 12:45

thewhitecracker

Menu d'applications en ligne de commande ?

Bonjour à tous, ami(e)s Tuxiens et Tuxiennes smile

J'utilise énormément le Terminal je fais tout dessus, sauf ce qui me requiert vraiment du graphique. cool

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. wink

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. hmm

Après minitieuse recherche, j'ai pas trouvé de lanceur d'applications sous forme de menu pour le terminal sad Si quelqu'un connais quelques chsoe de la sorte dont je cherche, je suis preneur ! big_smile

James


On road !

Hors ligne

#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


On road !

Hors ligne

#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" wink )

#!/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

... cool

Hors ligne