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 09/10/2022, à 18:59

ewfzapp

Comment rendre l’exécution d'un script un peu plus..... classe?

Salut les copains & copines,

il y a quelques temps j'ai "rédigé" un script que je lance après chaque réinstallation de machine, pour installer toutes mes applications & faire les mises à jours.
L'an dernier je l'ai agrémenté d'une interface zenity sur une partie des installations.
Bref, voici ma question:

Existe-t-il une possibilité de le rendre plus "user friendly", plus classe?

Parce que là; il y a simplement des lignes qui se succèdent dans un terminal (à part la partie zenity) et c'est un peu moche....

Je sais, c'est un peu naze comme question, mais tant qu'a faire un script, autant qu'il ai de la gueule, non???

Merci d'avance...

bonne soirée....


www.indigenecreations.fr

Hors ligne

#2 Le 09/10/2022, à 19:58

Vobul

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Déjà tu peux grouper tes lignes avec des fonctions. Et séparer le script en sous-scripts (donc différents fichiers) pour séparer les sujets.

Mais en vrai ce que tu devrais faire c'est surtout utiliser Ansible.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 09/10/2022, à 20:46

ewfzapp

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Merci pour ton retour.

Je suis débutant, je vais étudier ce que tu me propose.

Merci l'ami


www.indigenecreations.fr

Hors ligne

#4 Le 09/10/2022, à 21:55

Amiralgaby

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Pour user friendly, j'imagine que tu cherches à amener plus de facilité à lancer ton script (User Experience) pour éviter de lancer par terminal.

Dans ce cas, j'aurais conseillé de faire un raccourci-lanceur qui permet de lancer ton script en un clic sur un lanceur (pas de terminal, juste zenity qui affiche peu à peu l'avancement de ton script).

Sinon, si ta demande est de le rendre plus beau (User Interface), tu peux mettre des images des applications ou configuration qui se produisent sur l'ordinateur où le script s'exécute wink zenity doit pouvoir le faire

Dernière modification par Amiralgaby (Le 10/10/2022, à 13:34)


Vive la communauté du Libre !!!

Hors ligne

#5 Le 09/10/2022, à 22:51

Vobul

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

@Amiralgaby, on parle d'UX pour User Experience wink


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#6 Le 10/10/2022, à 06:08

Compte supprimé

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Bonjour,

Vobul a écrit :

@Amiralgaby, on parle d'UX pour User Experience wink

Ah bon? J'ai un doute...

#7 Le 10/10/2022, à 13:19

Vobul

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Il n'y a pourtant aucun doute. Tape "UI/UX" dans ton moteur de recherche préféré, tu verras que personne ne parle jamais d'UE.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#8 Le 10/10/2022, à 13:30

Amiralgaby

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Tu as raison Vobul, c'est une erreur de ma part. Après on se comprend smile


Vive la communauté du Libre !!!

Hors ligne

#9 Le 10/10/2022, à 14:17

Compte supprimé

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Vobul a écrit :

Il n'y a pourtant aucun doute. Tape "UI/UX" dans ton moteur de recherche préféré, tu verras que personne ne parle jamais d'UE.

Mon doute portait sur la demande du PO qui me semblait-il porter sur comment rendre plus esthétique l'interface de son script...
Faut croire, que je n'ai pas bien interprété la demande.(ou pas?)

#10 Le 10/10/2022, à 17:04

ar barzh paour

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

pourtant quand je tape UE je trouve par exemple "c'est quoi l'UE" lol lol


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 22.04, 22.04, 23.04
Portable1 : Intel(R) Core(TM)2 Duo CPU     T6570  @ 2.10GHz RAM 4GiB DDR2 667 MHz Ubuntu 23.04 ( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#11 Le 10/10/2022, à 19:06

MicP

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Bonjour

Dans son message #1, ewfzapp a écrit :

… Je sais, c'est un peu naze comme question, mais tant qu'a faire un script, autant qu'il ai de la gueule, non??? …

C'est pas du tout naze comme question,
mais il est impossible de te proposer une solution pertinente sans voir le contenu du script et savoir comment, où et par qui il sera lancé et ce que tu voudrais qu'il fasse.

Dernière modification par MicP (Le 10/10/2022, à 19:06)

Hors ligne

#12 Le 14/10/2022, à 14:21

ewfzapp

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Merci pour vos retour les amis, j'apprécie vraiment.

Mon désir était juste que ça soit classe pendant le déroulé, en effet voir défiler des lignes de code à la matrix, ca fait rire 5 minutes smile:):)

Quand au fameux script, le voilà:


#!/bin/bash

echo Mon premier script
sudo add-apt-repository ppa:flacon/ppa
sudo add-apt-repository ppa:obsproject/obs-studio
echo "deb http://deb.volian.org/volian/ scar main" | sudo tee /etc/apt/sources.list.d/volian-archive-scar-unstable.list
wget -qO - https://deb.volian.org/volian/scar.key | sudo tee /etc/apt/trusted.gpg.d/volian-archive-scar-unstable.gpg > /dev/null
sudo apt update && sudo apt install nala
sudo nala update && sudo nala upgrade
sudo nala install aptitude synaptic gdebi-core
sudo nala install unace rar unrar p7zip-rar p7zip sharutils uudeview mpack arj cabextract lzip lunzip
sudo nala install ffmpeg
sudo nala install v4l2loopback-dkms
sudo nala install obs-studio
sudo nala install nfs-common
sudo nala install snapd
sudo nala install language-pack-fr
sudo nala install language-pack-fr-base
sudo nala install language-pack-gnome-fr 
sudo nala install language-pack-gnome-fr-base

sudo mkdir /media/syno_zic
sudo mkdir /media/syno_video
sudo mkdir /media/syno_dl
sudo mkdir /media/syno_sauvegarde
sudo mkdir /media/syno_photos



cat >> /etc/fstab << '_FIN_'
#synology_music
192.168.1.17:/volume1/music/ /media/syno_zic nfs defaults,user,auto,noatime,intr,rw 0 0
#syno_video
192.168.1.17:/volume1/video/ /media/syno_video nfs defaults,user,auto,noatime,intr,rw 0 0
#syno_dl
192.168.1.17:/volume1/telechargements/ /media/syno_dl nfs defaults,user,auto,noatime,intr,rw 0 0 0
#syno_photos
192.168.1.17:/volume1/homes/ewfzapp/Photos/ /media/syno_photos nfs defaults,user,auto,noatime,intr,rw 0 0 0
#syno_sauvegarde
192.168.1.17:/volume1/sauvegarde/ /media/syno_sauvegarde nfs defaults,user,auto,noatime,intr,rw 0 0 0
_FIN_


zenityresult=$(
	zenity --checklist --list --title="script d'installation de mes applis" --width="800" --height="600" \
		--column="selectionnez" --column="applis" \
		" " "vlc" \
		" " "gparted" \
		" " "easytag" \
		" " "gnome-tweaks" \
		" " "signal" \
		" " "walc" \
		" " "gimp" \
		" " "filezilla" \
		" " "flacon" \
		" " "inkscape" \
		" " "shutter" \
		" " "spotify" \
		" " "installer les *deb du répertoire courant" \
		" " "nettoyer l'installation" \
		" " "mettre à jour" \
		" " "redemarrer" \
		
)
if [[ $zenityresult == *"vlc"* ]]; then
	sudo nala install vlc
fi

if [[ $zenityresult == *"gparted"* ]]; then
	sudo nala install gparted
fi

if [[ $zenityresult == *"easytag"* ]]; then
	sudo nala install easytag
fi

if [[ $zenityresult == *"gnome-tweaks"* ]]; then
	sudo nala install gnome-tweaks
fi

if [[ $zenityresult == *"signal-desktop"* ]]; then
	sudo snap install signal-desktop 
fi

if [[ $zenityresult == *"walc"* ]]; then
	sudo snap install walc
fi

if [[ $zenityresult == *"gimp"* ]]; then
	sudo nala install gimp
fi

if [[ $zenityresult == *"filezilla"* ]]; then
	sudo nala install filezilla
fi

if [[ $zenityresult == *"flacon"* ]]; then
	sudo nala install flacon
fi

if [[ $zenityresult == *"inkscape"* ]]; then
	sudo nala install inkscape
fi

if [[ $zenityresult == *"shutter"* ]]; then
	sudo nala install shutter 
fi

if [[ $zenityresult == *"spotify"* ]]; then
	sudo snap install spotify 
fi

if [[ $zenityresult == *"installer les *deb du répertoire courant"* ]]; then
	sudo dpkg -i *.deb

fi

if [[ $zenityresult == *"nettoyer l'installation"* ]]; then
	sudo nala autoremove
fi

if [[ $zenityresult == *"mettre à jour"* ]]; then
	sudo nala upgrade
fi

if [[ $zenityresult == *"redemarrer"* ]]; then
	sudo reboot -h now
fi

Existe t'il um moyen par exemple que dès le début il m'ouvre une fenetre (pas un terminal) ou il m'explique ce qu'il fait ou tout autre visuel sympa...

Merci encore pour votre aide.


www.indigenecreations.fr

Hors ligne

#13 Le 14/10/2022, à 15:05

Watael

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

un script qui fait plus que UN sudo doit être exécutable uniquement par root, et donc être exécuté entièrement par sudo.

tu peux très bien exécuter le script dans un terminal sans que les commandes "polluent" ce denier, en redirigeant la sortie des commandest vers un log, ou vers /dev/null, et en faisant des echo de chaque étape à mesure qu'elles sont exécutées et /ou ont été exécutées...


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#14 Le 14/10/2022, à 17:48

erresse

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Watael a écrit :

en faisant des echo de chaque étape à mesure qu'elles sont exécutées et /ou ont été exécutées...

Et pour que ces commentaires s'affichent dans une fenêtre et non dans le terminal, tu peux utiliser "zenity" pour les faire sortir. D'ailleurs, si tu exécutes le script dans l'environnement graphique avec "zenity", les lignes qui s'affichent dans le terminal ne se voient pas puisque celui-ci n'est pas affiché...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#15 Le 14/10/2022, à 18:09

MicP

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

… tu peux utiliser "zenity" pour les faire sortir.  …

Tout en restant dans la fenêtre de terminal, Il y a aussi whiptail (qui n'a même pas besoin d'être installé puisqu'il l'est déjà)
que vous reconnaîtrez facilement en voyant les captures d'écran (à droite) dans la page wikipedia accessible par le lien ci-dessus

Hors ligne

#16 Le 14/10/2022, à 18:35

erresse

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

@MicP: Je ne connaissais pas "whiptail" mais après lecture de la page que tu mets en lien, je ne vois pas trop quel est la différence ou l'avantage par rapport à "zenity"... Ces commandes y ressemblent furieusement.
Et si on veut aller plus loin avec des possibilités plus étendues que "zenity", il y a maintenant "yad" qui est super !


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#17 Le 15/10/2022, à 08:51

MicP

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

erresse a écrit :

…après lecture de la page que tu mets en lien, je ne vois pas trop quel est la différence ou l'avantage par rapport à "zenity"... Ces commandes y ressemblent furieusement. …

C'est exactement pour ça que je l'ai indiqué car comme tu l'as remarqué il fait exactement la même chose que zenity
mais sans avoir besoin d'installer un paquetage supplémentaire, (qui je l'espère ne sera pas un snap de plus) et qui devra sans doute nécessiter d'installer d'autres paquetages nécessaires à son fonctionnement en mode graphique
alors que whiptail est déjà installé par défaut sur n'importe quel variante de distribution Ubuntu (et même sur d'autres distributions).

Dernière modification par MicP (Le 15/10/2022, à 08:52)

Hors ligne

#18 Le 15/10/2022, à 11:17

erresse

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

@MicP: Juste deux petits trucs... Sur ma variante (Ubuntu-Mate) "zenity" est installé par défaut avec le système, il n'y a rien à rajouter. Pour "whiptail", je te confirme qu'il est bien installé aussi par défaut sur ma machine, mais j'ai essayé de m'en servir et je n'ai pas pu arriver à le faire fonctionner. Une commande basique telle que

whiptail --msgbox "Coucou" 100 100

me fige la fenêtre du terminal sans rien afficher qu'un fond uniformément gris et ne répond plus au clavier.
Obligé de faire "Ctrl+Alt+C" pour reprendre la main...
Est-ce qu'il y a quelque chose à faire que j'ai loupé ou quoi ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#19 Le 15/10/2022, à 13:15

MicP

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Au cas où, c'est lancé avec l'interpréteur de commandes bash

Essaye avec cette ligne de commande,
elle tiendra compte du nombre de lignes et de caractères par ligne que peut afficher ta fenêtre de terminal.

whiptail --title "Titre de la boîte" --msgbox "Le message que tu veux y mettre.\n\nIl faudra appuyer sur la touche Entrée pour fermer cette boîte de dialogue" $(($LINES-10)) $(($COLUMNS-10))

Il y a aussi celle là :

{ for ((i=0;i<=100;i+=2)); do sleep .1; echo $i; done; } | whiptail --gauge "Veuillez patienter …" 6 $(($COLUMNS-10)) 0

Dernière modification par MicP (Le 15/10/2022, à 13:35)

Hors ligne

#20 Le 15/10/2022, à 13:31

geole

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Bonjour
Chapeau pour les deux commandes

Dernière modification par geole (Le 15/10/2022, à 13:32)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#21 Le 15/10/2022, à 13:37

erresse

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

OK, merci, je constate que les tailles sont donc exprimées en nombre de lignes et de caractères au lieu de pixels, il fallait le savoir ! Par ailleurs, la boite graphique s'affiche donc DANS le terminal contrairement à "zenity" ou "yad" qui affichent une boite indépendante ailleurs sur l'écran. Je m'explique mieux pourquoi tu disais dans ton message

MicP a écrit :

Tout en restant dans la fenêtre de terminal, Il y a aussi whiptail

Cet utilitaire génère donc des boites en mode "graphique texte", ce qui est effectivement très différent (et du coup très intéressant) des autres utilitaires graphiques.
Il faut donc bien respecter les dimensions de la fenêtre de terminal pour que ça fonctionne, faute de quoi, rien de cohérent ne s'affiche... Merci de m'avoir fait découvrir "whiptail", ça peut être utile en mode terminal.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#22 Le 15/10/2022, à 14:31

MicP

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

whiptail est le programme qui est utilisé pour les boîtes de dialogues des programmes d'installation ou/et de configuration en mode texte
comme par exemple avec la commande dpkg-reconfigure
Par exemple :

dpkg-reconfigure dpkg-reconfigure

ou bien :

dpkg-reconfigure locales

=======
On peut aussi choisir les couleurs utilisées par whiptail
Voir : https://askubuntu.com/questions/776831/ … om-magenta

Dernière modification par MicP (Le 16/10/2022, à 19:08)

Hors ligne

#23 Le 15/10/2022, à 22:26

Tawal

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Hello,

Il y a aussi dialog :

dialog --infobox Test 3 8

Edit:
Modification de la taille de la boite.

Dernière modification par Tawal (Le 15/10/2022, à 22:30)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#24 Le 16/10/2022, à 08:57

FrancisFDZ

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

Bonjour,
Je vois 2 façons de comprendre/traiter le problème :
- esthétique finale, du point de vue utilisateur
- esthétique interne, du point de vue du concepteur/développeur
Ces deux points de vue ne sont pas exclusifs.


-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]

Hors ligne

#25 Le 16/10/2022, à 12:34

pausecafé

Re : Comment rendre l’exécution d'un script un peu plus..... classe?

je te propose progress de zenity pour le rendre plus classe

chaque echo avec un chiffre change la barre de progresse (en %)
chaque echo qui commence par "# " change le texte dans la barre de progression

exemple pour le début de ton code :

(
sudo add-apt-repository ppa:flacon/ppa

echo "# ajout de ppa:obsproject/obs-studio"
sudo add-apt-repository ppa:obsproject/obs-studio
echo "10"

echo "# ajout de ppa:obsproject/obs-studio"
echo "deb http://deb.volian.org/volian/ scar main" | sudo tee /etc/apt/sources.list.d/volian-archive-scar-unstable.list
echo "20"

echo "# ajout de la clé de volian.org"
wget -qO - https://deb.volian.org/volian/scar.key | sudo tee /etc/apt/trusted.gpg.d/volian-archive-scar-unstable.gpg > /dev/null
echo "30"

echo "# mise à jour et installation de nala"
sudo apt update && sudo apt install nala
echo "40"

sudo nala update && sudo nala upgrade

sudo nala install aptitude synaptic gdebi-core

sudo nala install unace rar unrar p7zip-rar p7zip sharutils uudeview mpack arj cabextract lzip lunzip

sudo nala install ffmpeg

sudo nala install v4l2loopback-dkms

sudo nala install obs-studio

sudo nala install nfs-common

sudo nala install snapd

sudo nala install language-pack-fr

sudo nala install language-pack-fr-base

sudo nala install language-pack-gnome-fr

sudo nala install language-pack-gnome-fr-base

)| zenity --progress --title="Mon premier script" --text="ajout du ppa:flacon/ppa" --percentage=0

enfin après moi je trouve que ça fait beaucoup de ligne qui peuvent être condensé

il faut surement ajouter des -y pour les apt/nala pour que ça évite de poser des questions

Hors ligne