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 27/04/2008, à 02:21

geekubuntu

Aide pour script bash

Holé smile

Je voudrais proposer un simple script bash d'installations de deux logiciels (depuis les dépots officiels) et je voudrais y insérer une demande de validation pour chacun d'eux (par exemple si on en veut qu'un).

Donc pour l'instant j'ai ça:

#!/bin/sh
	sudo aptitude install soft1 soft2
#end of file

- je voudrais afficher une demande préalable si on veut installer "soft1" , puis "soft2" en répondant par "y" ou "n" (installation "un par un")
- es-ce "correct" d'utiliser aptitude et apt-get dans un même script? par exemple il y a des softs qui avec aptitude prennent trop de dépendances.
- que la fenêtre ne se ferme pas à la fin du script smile

merki d'avance ^^

++


Trouve ton GULL!! --> http://www.trouvetongull.info/

Hors ligne

#2 Le 27/04/2008, à 02:54

herberts

Re : Aide pour script bash

Déjà, pour la question 2 : NON. aptitude et apt-get ne fonctionnant pas tout à fait pareil, il ne faut pas les alterner, il faut en choisir un et s'y tenir. Il y a de nombreux débats là dessus, aptitude est censé mieux gérer les dépendances, perso j'utilise apt-get qui marche quand même très bien.

Sinon, pour ton script, je te proposerai une architecture du genre : "pour installer soft1, tapez 1, pour installer soft2 tapez 2, pour installer les 2 tapez 3 et pour quitter tapez n'importe quelle autre touche." Ensuite tu stocke la réponse dans une variable, et tu compare la valeur et exécute ce qui ai demandé.

En tout cas, pour que la fenêtre ne se ferme pas, fini par "read" sur la dernière ligne (de mémoire)

Dernière modification par herberts (Le 27/04/2008, à 02:55)

Hors ligne

#3 Le 27/04/2008, à 03:10

Fake

Re : Aide pour script bash

Il semble que tu veuille faire un script qui s'affiche dans un terminal.

- Pour la question :
Il va fallloir afficher la question, lire la réponse, puis filtrer la réponse pour les différentes actions, selon le choix.
Pour afficher du texte on utilise la commande "echo"
Pour lire des variables je pense que "read" te conviendra :
Pour filtrer on utilise "if" ou "case" (ici il n'y aura que deux cas en gros, max trois si tu prend en compte l'erreur de frappe)
Voire les différentes pages man ou http://lea-linux.org/cached/index/Dev-shell_script.html#

- Pour garder la fenêtre
Si tu lance le script a partir d'une commande le terminal restera ouvert et est déjà ouvert avant l'execution du script.
Si tu lance le script en cliquant ou d'un lanceur, il faudra que le script ouvre lui même un terminal (il faut chercher du coté de "gnome-terminal" je crois mais pas sur)
Sinon un "sleep" le gardera ouvert pendant un certain temps
Sinon un read sans argument attend que l'on tape 'enter'
Sinon il y a surement un autre moyen.

Si jamais tu pense lancer le script a partir d'un lanceur et non pas d'une ligne de commande, tu pourais regarder du copté de zenity pour afficher tes messages dans des boites de dialogues et non un terminal.

Dernière modification par Fake (Le 27/04/2008, à 03:11)

Hors ligne

#4 Le 27/04/2008, à 03:42

herberts

Re : Aide pour script bash

Si tu es débutant en script bash, je pense que zénity c'est un peu chaud, car ça sous entendrai de metre en place des boutons cliquables pour les choix.

Ensuite, on peu te donner plein de conseil, mais le mieux je pense est que tu cherches quelques tutos sur le bash, c'est comme ça que tu apprendra le mieux. Parce que dans l'absolu, on pourrait te le faire ton script, mais tu n'aurai pas appris grand chose.

Quelques adresses :
http://abs.traduc.org/abs-4.2.01-fr/index.html très complet

http://ftp.traduc.org/doc-vf/gazette-li … 111-D.html les bases
http://ftp.traduc.org/doc-vf/gazette-li … 112-F.html la suite
http://www.ac-creteil.fr/reseaux/system … ation.html

http://www.trustonme.net/didactels/148.html

Celui sur léa-linux donné par Fake est très bien aussi, complet et abordable

Dernière modification par herberts (Le 27/04/2008, à 03:43)

Hors ligne

#5 Le 27/04/2008, à 05:20

geekubuntu

Re : Aide pour script bash

Merci à vous pour tous ces liens et conseils big_smile En effet je pensais à Zenity, mais pour l'instant je vais faire un simple . sh tongue  Il s'agit d'un programme pour rajouter certaines choses à Ubuntu après une install fraiche (dépots, softs et docs) et sera distribué au sein de mon GULL smile

Par contre je bute sur un truc là, je m'essaye aux demandes de choix:

  echo "Voulez-vous exécuter ce script? (o/n)"
  read reponse
  if [[ "$reponse" == "o" ]]
  then 
    sudo apt-get install soft1
  fi

ça me ferme le terminal quelque soit la réponse tapée sad

++

Dernière modification par geekubuntu (Le 27/04/2008, à 05:23)


Trouve ton GULL!! --> http://www.trouvetongull.info/

Hors ligne

#6 Le 27/04/2008, à 11:25

Fake

Re : Aide pour script bash

sudo apt-get install $soft1
En tout cas tu as besoin d'un $ ici, le paquet soft1 n'existe pas.
Chez moi il demande le mot de passe quand même.

J'ai pensé a zenity parceque je pensais que tu poserai une question par soft.
Du coup tu pouvais faire une boite installer truc2 ? oui non, puis une autre truc 2 oui non... tu garde tout les choix en mémoire et ensuite tu installes (comme ca on est pas obligé de poireauter pour la question suivante :-)

Dernière modification par Fake (Le 27/04/2008, à 11:26)

Hors ligne

#7 Le 27/04/2008, à 11:29

herberts

Re : Aide pour script bash

Déjà, je te conseillerai d'utiliser #!/bin/bash, plutôt que #!/bin/sh, surtout si tu prévois de passer ton script à d'autres gens, car sh ne pointera pas forcément toujours vers bash, du coup ton script pourrait ne pas marcher chez tout le monde.

Et avec ceci ça marche chez moi :

#!/bin/bash

echo "Voulez-vous exécuter ce script ? (o/n)"
read reponse
if echo "$reponse" | grep -q "o"
	then
		echo "Ok, alors j'installe soft1"
		sudo apt-get install soft1
	else
		echo "Au revoir"
fi

Hors ligne

#8 Le 27/04/2008, à 11:45

Fake

Re : Aide pour script bash

Même avec ce que te donne herberts, si tu veux lancer le script par clic et que tu ne rajoute pas de pause à la fin, la fenêtre va se fermer et tu n'aura le temps de rien voir... big_smile
Teste donc ton script a partir d'une console déja ouverte, ca sera plus simple pour toi

Hors ligne

#9 Le 27/04/2008, à 11:47

herberts

Re : Aide pour script bash

oui, c'est pas faux. ou rajoute read sans argument à la fin, la fenêtre restera ouverte jusqu'à ce que tu tape sur entrée

Hors ligne

#10 Le 27/04/2008, à 13:05

Fake

Re : Aide pour script bash

Je crois que j'aurai fait un truc comme ça. Cela permet de modifier très facilement le script pour changer le programme a installer.

#!/bin/bash

soft1=nom_du_paquet

echo "Voulez-vous exécuter ce script ? (o/n)"
read reponse
if echo "$reponse" | grep -q "o"
    then
        echo "Ok, alors j'installe $soft1"
        sudo apt-get install $soft1
    else
        echo "Au revoir"
fi
read

Hors ligne

#11 Le 27/04/2008, à 14:02

herberts

Re : Aide pour script bash

Tout à fait d'accord. Après, mais ça c'est chacun comme il veut, j'ai tendance à mettre les constantes définies au départ en majuscule (SOFT1=....) wink

Hors ligne

#12 Le 27/04/2008, à 15:46

geekubuntu

Re : Aide pour script bash

thanks smile

pour finir, afin de pas mettre des "sudo" partout, comment passer "root" dans le script.

il y a bien la solution de faire "sudo script.sh" , mais je souhaite qu'il soit éxécuter via un double-clic en le rendant simplement exécutable.

++


Trouve ton GULL!! --> http://www.trouvetongull.info/

Hors ligne

#13 Le 27/04/2008, à 16:04

yurek

Re : Aide pour script bash

#!/bin/bash
paquet=`zenity  --entry --title="Paquet a installé" --text="Entrer le nom du paquet que vous voulez installer" --entry-text="nom du paquet"`
        sudo apt-get install $paquet
dpkg -l $paquet
if [ "$PIPESTATUS" = "0" ]; then
zenity --info --title="Etat de l'installation" --text="L'installation s'est bien passé"
else
zenity --error --title="Etat de l'installation" --text="Une erreur s'est produit à l'installation"
fi

Dernière modification par yurek (Le 27/04/2008, à 16:04)


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#14 Le 27/04/2008, à 16:38

geekubuntu

Re : Aide pour script bash

yurek a écrit :

#!/bin/bash
paquet=`zenity  --entry --title="Paquet a installé" --text="Entrer le nom du paquet que vous voulez installer" --entry-text="nom du paquet"`
        sudo apt-get install $paquet
dpkg -l $paquet
if [ "$PIPESTATUS" = "0" ]; then
zenity --info --title="Etat de l'installation" --text="L'installation s'est bien passé"
else
zenity --error --title="Etat de l'installation" --text="Une erreur s'est produit à l'installation"
fi

ben dans mon cas c'est pour proposer l'installation d'une sélection de softs déjà établis par nos soins tongue


Trouve ton GULL!! --> http://www.trouvetongull.info/

Hors ligne

#15 Le 27/04/2008, à 17:03

Fake

Re : Aide pour script bash

La commande su permet de changer d'utilisateur.

Pour passer en root on utilise

sudo su

ou

gksudo su

Il demande le mot de passe et le terminal devient un terminal root.

Hors ligne

#16 Le 27/04/2008, à 17:17

geekubuntu

Re : Aide pour script bash

Si je mets:

	sudo su ;

dans une fonction, cela demande bien le mdp dans le terminal, mais le script s'arrête hmm

(...)
Bonne optimisation!

[sudo] password for fred: 
root@fred-laptop:/home/fred/Bureau#

et donc là ben le script est stoppé...


Trouve ton GULL!! --> http://www.trouvetongull.info/

Hors ligne

#17 Le 27/04/2008, à 18:17

yurek

Re : Aide pour script bash

#!/bin/bash
function annuler { 
    if [ "${PIPESTATUS[0]}" != "0" ]; then
	exit;
    fi
}

PAQUET=$(zenity --list --checklist --width=300 --height=200 \
    --column "Selection" --column "A/B" --column "Choix" --separator=" " \
    --title="Installation de paquets" \
    --text="Choisissez le(s) paquet(s) à installé" \
    --hide-column="2" \
    TRUE "nom_du_paquet_1" "Paquet 1" \
    FALSE "nom_du_paquet_2" "Paquet 2"  )
annuler

PAQUET=`zenity  --entry --title="Paquet a installé" --text="Entrer/confirmer le(s) nom(s) du(des) paquet(s) que vous voulez installer" --entry-text="$PAQUET"`
annuler
if [ "$PAQUET" = "" ];then
	sudo apt-get install $PAQUET | zenity --progress \
--percentage=0 \
--title="Installation" \
--text="Installation des paquets" \
--auto-close;
	sudo dpkg -l $PAQUET | zenity --progress \
--percentage=0 \
--title="Vérification" \
--text="Vérification de l'installation des paquets" \
--auto-close;
	if [ "$PIPESTATUS" = "0" ]; then
		zenity --info --title="Etat de l'installation" --text="L'installation s'est bien passé"
	else
		zenity --error --title="Etat de l'installation" --text="Une erreur s'est produit à l'installation"
	fi
else
zenity --error --title="Etat de l'installation" --text="Aucun paquet a installé !"
fi

"nos" ? vous etes une entreprise ?

Dernière modification par yurek (Le 27/04/2008, à 18:22)


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#18 Le 27/04/2008, à 19:50

herberts

Re : Aide pour script bash

geekubuntu a écrit :

Il s'agit d'un programme pour rajouter certaines choses à Ubuntu après une install fraiche (dépots, softs et docs) et sera distribué au sein de mon GULL

wink

Hors ligne

#19 Le 28/04/2008, à 14:17

geekubuntu

Re : Aide pour script bash

reuh smile

voici notre création en version 0.5.1 :  http://pastebin.com/m53d3c3f8

le script fait:
- ajouts de documentations via framabook
- nouveaux dépôts
- nouveaux logiciels pour une utilisation plus compléte (choix discutables mais c'est dans l'optique de fournir quelque chose de plus complet aux nouveaux utilisateurs - venant de windows principalement)

avez-vous des remarques sur le code? smile l'interface graphique sera pour plus tard tongue

++


Trouve ton GULL!! --> http://www.trouvetongull.info/

Hors ligne

#20 Le 28/04/2008, à 14:29

yurek

Re : Aide pour script bash

Pourquoi avoir demander de l'aide si tu savais le faire ?


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#21 Le 28/04/2008, à 15:09

herberts

Re : Aide pour script bash

le code à l'air correct, par contre, au niveau du choix des logiciels, c'est très orienté kde (je pense notamment à amarok, il a beau être très bien, ça fait ch**r d'installer les bibliothèque QT juste pour ça), il pourrait être bon, soit de détecter la variante utilisé, un peu sur le principe de la détection de la version d'ubuntu (ubuntu, kubuntu, xubuntu..), soit juste de demander à l'utilisateur laquelle il utilise en stockant la réponse dans une variable. Ensuite, faire une liste de programme différente selon la variante.

Dernière modification par herberts (Le 28/04/2008, à 15:11)

Hors ligne

#22 Le 28/04/2008, à 21:30

yurek

Re : Aide pour script bash

Est t il franchement necessaire de demander a l'utilisateur quel version d'ubuntu est utiliser, il suffit de le récupéré avec une simple commande, de meme pour la version !


http://doc.ubuntu-fr.org/installation/debutants
http://doc.ubuntu-fr.org/diagnostic
http://doc.ubuntu-fr.org/diagnostic_outils
http://doc.ubuntu-fr.org/reflexe_ubunteros

Hors ligne

#23 Le 28/04/2008, à 22:35

herberts

Re : Aide pour script bash

il ne me semble pas que le script demande à l'utilisateur sa version, mais je peux me tromper wink

Hors ligne

#24 Le 28/04/2008, à 23:03

Fake

Re : Aide pour script bash

J'ai l'impression qu'il voulais juste la méthode du read il ne lui manquait que ça smile

Sinon le code a l'air bien, la coloration est vraiment merdique ca passerait inaperçu sur un skyblog big_smile

Sinon, l'interface graphique ben tout est dans ce que t'a donné Yurek !
Les principales fenêtres Zenity dont tu aurais besoin et leur syntaxe.

J'aurai personnelement donné le choix a l'utilisateur pendant l'exécution du script. Peut être avec un echo list_soft dans un fichier et des cat pour poser la question a chaque fois, puis on reconstruit un autre list_soft...
Bon ca fait beaucoup de questions apres mais on est a l'installation et autant je trouve qu'il manque des choses a l'install par défaut autant j'ai pas envie d'installer toute la liste !!! big_smile apres les gouts et les couleurs...

Bon on peut aussi éditer le script avant de le lançer, ca fait un bon entrainement pour le newbee ... smile

Hors ligne

#25 Le 28/04/2008, à 23:07

herberts

Re : Aide pour script bash

ou alors que le script aille lire la liste des softs dans un fichier à part, lequel sera édité, histoire qu'il n'y ai pas d'effacement malencontreux d'un morceau du script, ou tout simplement dans un souci de clarté pour les newbee justement wink

Hors ligne