Professional Documents
Culture Documents
Prsente par : ALLIER HOEGUESTEN QUENTINY, tudiant en Master1 Tlcoms et Rseaux l'EC2LT
11/01/11
Table des matires A. Lenvironnement bash..............................................................3 a) Les variables en bash..................................................... 3 B) Les fichiers de configuration...................................................4 a) La famille bashrc ............................................................5 C. Les scripts..................................................................................5 a) Script shell.......................................................................5 D) Passage de paramtres un script .........................................6 a) Les expressions logiques ................................................8 E. Les boucles ................................................................................8 a) Test if................................................................................8 b) Test case.........................................................................10 F. Les paramtres dentre dun script .................................11 G. Calculs ...................................................................................12 H.QUELQUES EXERCICES ...................................................14
11/01/11
Introduction
Le shell est un interprteur de commandes. Plus qu'une simple couche isolante entre le noyau du systme d'exploitation et l'utilisateur, il est aussi un langage de programmation puissant. Un programme shell, appel un script, est un outil facile utiliser pour construire des applications en << regroupant >> des appels systme, outils, utilitaires et binaires compils. Virtuellement, le rpertoire entier des commandes UNIX, des utilitaires et des outils sont disponible partir d'un script shell. Si ce n'tait pas suffisant, les commandes shell internes, telles que les constructions de tests et de boucles, donnent une puissance et une flexibilit supplmentaires aux scripts. Les scripts shell conviennent exceptionnellement bien pour les tches d'administration du systme et pour d'autres routines rptitives ne rclamant pas les particularits d'un langage de programme structur complet. Ce rsum permettra d' initier un apprenant la programmation shell. Ainsi avant de programmer quelques notions seront d' abord expliques savoir l' objectif, points importants, environnement... Objectifs Connatre l'intrepreteur de commandes Bash Connatre les bases de la programmation du shell. Matriser le principe des scripts shell pour comprendre les scripts systme. Savoir programmer des expressions logiques et arithmtiques ainsi que des boucles. Points importants Automatiser les tches administratives avec des scripts bash est indispensable et trs efficace. Une bonne utilisation de Linux est indissociable des scripts
Mots cls $*, $#, $0, $1, $2, $!, $$, $?, ~/.profile, ~/.bashrc, ~/.bash_logout, ~/.inputrc, /bin/bash, /etc/bash_logout, /etc/bashrc, /etc/inputrc, /etc/profile, bash, case, do, done, else, env, esac, export, expr, fi, for, if, PATH, select, set, test, then, unset, while
A. Lenvironnement bash
11/01/11
Attention ne pas mettre despace avant et aprs le signe = !!! Pour faire rfrence au contenu dune variable, on la prfixe par le signe $ .
Pour effacer le contenu dune variable, on utilise la commande unset. : unset ma_variable
Le shell utilise des variables pour tenir compte des paramtres de configuration spcifiques des utilisateurs appels variables denvironnement. Les variables HOME, DISPLAY, PWD en font partie. echo $HOME /usr/home/quentiny Lors de lutilisation dun programme, le shell utilise la variable denvironnement PATH pour retrouver le chemin daccs ce programme. On peut afficher le contenu de cette variable par la commande echo : ! echo $PATH exemple:
Pour quune variable soit visible de tous les shells (donc de toutes les commandes lances depuis le shell courant), il faut lexporter par la commande export. export MANPATH=/usr/share/docs Lors du dmarrage dune session shell, la plupart des variables denvironnement sont initialises et exportes partir des diffrents fichiers de configuration, tels que les fichiers bashrc et profile. 4 11/01/11
La commande env permet de dmarrer un shell avec des variables denvironnement dja positionnes des valeurs donnes. Ces variables denvironnement ont une dure de vie gale celle du shell dmarr. Par exemple, pour lancer la commande variable denvironnement ma_variable la valeur env ma_variable=ma_valeur ma_commande la a dure de vie et la visibilit de ma_variable dexcution de ma_commande.
a) La famille bashrc
Les fichiers de la famille bashrc sont lus lanc (ex commandes xterm ou bash). Ils servent gnralement stocker les alias et les fonctions utilises communement. On peut dmarrer le shell bash avec diffrentes options lui indiquant les fichiers de configuration lire au dmarrage : bash login : force la lecture des fichiers de connexion famille profile ; bash norc : pas de lecture des fichiers bashrc bash noprofile : pas de lecture des fichiers profile Attention, toutes les nouvelles sessions de bash, puisquelles sont des processus fils, hritent des variables dfinies dans les fichiers profile lors de la connexion. Le fichier /etc/bash_logout, sil est prsent, bash lu avant la deconnexion tous les utilisateurs. Le fichier ~/.bash_logout, sil est prsent, est excut la fin de la session bash spcifique un utilisateur. Le fichier inputrc permet de reconfigurer le clavier pour ajuster le fonctionnement des touches comme par exemple la touche deffacement arrire. Le fichier gnral est dans /etc/inputrc, les fichiers personnels dans ~/.inputrc. 5 11/01/11
ensuite suivant la formule en crivant votre script dans le fichier comme ceci(dans cet exemple un script permettant de saluer les amies: #!/bin/bash # Un petit script bon echo 'bonjour les amies'
Pour pouvoir excuter ces instructions, deux conditions doivent tre remplies : la premire ligne doit contenir #!/bin/bash (pour un shell script utilisant bash); le fichier doit tre excutable (ex en utilisant la commande chmod +x) et lisible (ex avec les permissions 755) [root@allier~] # chmod +x mon_script [root@allier~] # ./mon_script Si toutes ces conditions ne sont pas remplies, il est toujours possible de forcer lexcution du script avec la commande bash. [root@allier~] # bash mon_script voici le resultat concret:
11/01/11
Dautres variables rserves sont accessibles lintrieur dun script : $0 : nom du script ; $* : liste des paramtres ;
$# : nombre de paramtres ; $$ : numro du processus en cours $? : valeur de retour de la dernire commande.
Exemple de script utilisant les paramtres #!/bin/bash # un autre script echo "mon script est $0" echo "il y a eu $# paramtres en entre" echo "le premier paramtre est $1" exemple de capture d cran:
11/01/11
considrant maintenant deux paramtres tout en affichant le nombre de paramtre (s) et le nom du programme:
test -f /etc/profile -a test -f /etc/bashrc ou test -f /etc/profile && test -f /etc/bashrc ou [ -f /etc/profile -a -f /etc/bashrc ]
resultat l cran:
11/01/11
b) Test case Ce test permet de spcifier les commandes excuter valeurs prises par la variable passe en argument. Syntaxe : case <variable> in valeur1) commande1 ;; valeur2) commande2 ;; valeur3) commande3 ;; ... esac exemple:
10
11/01/11
resultat la sortie:
Cette boucle sert pour rpter les traitements un nombre de fois connu. Syntaxe: for <variable> in <liste> do commande1 commande2 commande3 ... done par exemple pour afficher les jours de la semaine : for jour in lundi mardi mercredi jeudi vendredi samedi dimanche do echo $jour done Cette boucle sert rpter les traitements un nombre de fois inconnu priori. Le test de continuit se fait au dbut de la boucle. La boucle continue tant que la condition est vraie. Syntaxe : while <condition> do <commande1> <commande2> ... done Pour faire le test de lecture dune valeur jusqu ce que lutilisateur entre la valeur 1 : #!/bin/sh i=0 while [ $i -ne "1" ] do read i done 11
b) Boucle for
d) Boucles while
11/01/11
Il existe une autre boucle, qui utilise le mot cl until la place de while. Elle diffre dans le traitement de la condition : la boucle est excute jusqu ce que la condition soit vraie. Le test est donc effectu en fin de boucle et la boucle est toujours excute au moins une fois.
G. Calculs
Il est possible de comparer des nombres en utilisant la commande test, vue prcdemment, avec les options suivantes : -lt pour infrieur (<) ; -gt pour suprieur (>) ; -le pour infrieur ou gal (<=) ; -ge pour suprieur ou gal (>=) ; -eq pour gal (=) ; -ne pour diffrent de (!=). Pour tester le nombre de paramtres en entre : exemple:
12
11/01/11
on obtiendra au resultat:
La commande expr permet deffectuer les quatre oprations arithmtiques de base, avec les oprateurs suivants : + pour laddition ; - pour la soustraction ; \* pour la multiplication ; / pour la division. 13 11/01/11
H) QUELQUES EXERCICES
Quelques scripts shell 1- Un programme qui lit un entier positif n et qui fait la somme de 1 n.
14
11/01/11
voici le resultat:
3- Un programme qui compte le nombre de fichier dans un dossier et qui donne le nombre de fichiers ordinaires et de dossiers.
15
11/01/11
Voici le resultat aprs avoir lanc le script vous pouvez aussi donner un argument(ex un repertoire, un dossier).
4-Un programme permettant de rcuprer tous les utilisateurs de votre machine et de rediriger dans un fichier, le fichier est prciser.
16
11/01/11
On aura au resultat
5-a- puis on va recrer ces utilisateurs recuprer sur une autre machine. 5-b- Bien avant cela testant d'abord localement. 5-b: on a
rsultat:
NB : les utilisateurs rcupers sont dja cr sur votre machine cette action provoquera les changements
des mots de passe de vos utilisateurs ainsi si vous voulez tester crez un fichier avec d' autres utilisateurs.
5.a: alors voici le script permettant de recrer ces utilisateurs rcupres (exo4) sur une autre machine distante.(en utilisant l'outil expect installer) 17 NB: le fichier ncessite le droit d'excution (commande: chmod a+x [nomscript] et
prciser l adresse du destinataire et son mot de passe dans le script. Ici l' adresse est 192.168.1.51 et le mot de passe est passer.
18
11/01/11
19
11/01/11
aprs l'excution du programme il faut choisir 1 ou 2 ou 3 qui permet respectivement d' ajouter, supprimer, modifier et suivre les instructions du programme.
20
11/01/11
conclusion:
Aujourdhui, beaucoup d'equipements Telecoms peuvent s'interfacer avec les systmes UNIX, il est important pour un tudiant en Tlcoms de maitriser la programmation Shell pour pouvoir automatiser certaines taches , surveiller et exploiter des donnes de ces equipements. C'est pourquoi, nous avons ecrit cet article pour permettre tout tudiant dans le domaine de TIC de finir par maitriser cette pratique. Car l'essentiel n'est pas de tout savoir necessairement ; mais d'etre au courant, et la volont aidant, on finit par tout maitraiser. Nous avons droul l'algo classique d'apprentissage d'un langage de programmation : entre-sortie, variables, intructions conditionnelles, boucles. Le prochain article que je vous propose traitera de la gestion des sous-programmes, des fichiers et de l'intgration des programmes shell pour la gestion des tlphones IP Cisco serie 79XX.
22
11/01/11