Anda di halaman 1dari 45

Navigation dans le Systme de Fichiers en Ligne de Commande

Section 2 Exercices
Navigation dans le Systme de Fichiers en Ligne de
Commande
Dure Estime : 30 Minutes
Objectif : Devenir familier avec les fonctions, la syntaxe et l'utilisation de
plusieurs commandes essentielles de manipulation de
fichiers et de rpertoires.

Configuration de Dpart : Un systme Fedora Core Linux install et fonctionnant, avec un compte
d'utilisateur sans privilge appel etudiant avec le mot de passe etudiant.

Squence 1 : Organisation de rpertoires et de fichiers

Scnario :
Des fichiers se sont accumuls dans votre rpertoire personnel. Vous avez dcid qu'il est temps de tout organiser. Vous
prvoyez de crer plusieurs sous-rpertoires et de copier et dplacer vos fichiers selon votre organisation. Vous possdez
galement plusieurs fichiers inutiles qui doivent tre supprims.

Tches :

1. Connectez-vous sur tty1 en tant que l'utilisateur etudiant avec le mot de passe etudiant.

2. Ds que vous tes connect sur le systme, vous devriez tre dans votre rpertoire personnel. Utilisez la commande
print working directory (afficher le rpertoire de travail) pour vous en assurer.

$ pwd
/home/etudiant

3. Vrifiez que vous possdez des fichiers dans votre rpertoire personnel en utilisant chacune des commandes
suivantes :

$ ls
$ ls -a
$ ls -al

Pourquoi la premire et la deuxime commande donnent-elles un nombre de fichiers diffrents?

Quelle est la taille du plus grand fichier et du plus grand rpertoire contenus dans votre rpertoire personnel, d'aprs
la troisime commande ?

4. Vous allez maintenant utiliser la commande touch pour crer les fichiers ncessaires pour cette squence. Les dtails
sur le fonctionnement de l'extension de la commande suivante seront donns dans un autre section. Pour l'instant,
saisissez exactement la ligne suivante comme vous la voyez (avec les accolades {} et le tiret de soulignement entre
les deux premiers groupes).

$ touch {rapport,graph}_{jan,fev,mar}

5. Utilisez la commande ls pour examiner les rsultats de la dernire commande. Vous devriez trouver six nouveaux
fichiers vides crs dans votre rpertoire personnel.
1/3
Navigation dans le Systme de Fichiers en Ligne de Commande

$ ls
graph_fev graph_jan graph_mar rapport_fev rapport_jan rapport_mar

Ces fichiers reprsentent les fichiers de donnes que vous allez utiliser dans le reste de cette squence. Si, pour une
raison quelconque, vous ne voyez pas ces fichiers, demandez de l'aide; sans ces fichiers le reste de cet exercice ne
fonctionnera pas.

6. Pour organiser vos fichiers, vous devez d'abord crer de nouveaux rpertoires. Utilisez mkdir pour crer plusieurs
rpertoires. Lorsque vous changez de rpertoires, ci-dessous, assurez-vous de vrifier que votre rpertoire de travail
est bien comme vous l'espriez.

$ mkdir Projets
$ mkdir Projets/graphs

$ cd Projets
$ pwd
/home/etudiant/Projets
$ mkdir rapports

$ cd rapports
$ pwd
/home/etudiant/Projets/rapports
$ mkdir ../Copies

Utilisez ls de nouveau pour examiner votre travail :

$ cd
$ ls -l
total 4
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 graph_fev
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 graph_jan
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 graph_mar
drwxrwsr-x 5 etudiant etudiant 4096 Sep 30 21:09 Projets
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 rapport_fev
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 rapport_jan
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 rapport_mar
$ ls Projets
Copies graphs rapports

7. Commencez par dplacer tous les fichiers graph dans le sous-rpertoire graphs du rpertoire Projets. Pour ce faire,
suivez deux tapes : dans la premire tape, dplacez un fichier ; dans la deuxime tape, dplacez deux fichiers :

$ mv graph_jan Projets/graphs
$ mv graph_fev graph_mar Projets/graphs
$ ls -l Projets/graphs/
total 0
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 graph_fev
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 graph_jan
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 graph_mar

8. Ensuite, dplacez deux des fichiers rapport dans le sous-rpertoire rapports du rpertoire Projets. Dplacez les
fichiers en une commande :

$ mv rapport_jan rapport_fev Projets/rapports


$ ls -l Projets/rapports
2/3
Navigation dans le Systme de Fichiers en Ligne de Commande

total 0
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 rapport_fev
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:08 rapport_jan

9. Supprimez le reste des fichiers rapport :

$ rm rapport_mar
$ ls
Projets

10.Passez dans le rpertoire Copies et copiez les fichiers Janvier dans ce rpertoire. Copiez-en un l'aide d'un chemin
absolu et l'autre l'aide d'un chemin relatif :

$ cd Projets/Copies
$ pwd
/home/etudiant/Projets/Copies

$ cp ../rapports/rapport_jan .
$ cp /home/etudiant/Projets/graphs/graph_jan .
$ ls -l
total 0
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:20 graph_jan
-rw-rw-r-- 1 etudiant etudiant 0 Sep 30 21:20 rapport_jan

Le point la fin est la destination : le rpertoire de travail courant.

Rsultats :
Un rpertoire personnel plus organis avec des fichiers placs dans les sous-rpertoires appropris.

3/3
Navigation dans le Systme de Fichiers l'aide de GNOME

Section 3 Exercices
Navigation dans le Systme de Fichiers l'aide de
GNOME
Dure Estime : 20 Minutes
Objectif : Devenir familier avec la navigation dans le systme de fichiers
l'aide de GNOME

Configuration de Dpart : Un systme Fedora Core Linux install et fonctionnant,


excutant le systme X Window avec un compte utilisateur sans
privilges appel etudiant avec le mot de passe etudiant.

Squence 1 : Utilisation de nautilus

Tches :

1. Connectez-vous sur l'ordinateur utilisant le systme X Window en tant qu'utilisateur etudiant.

2. Lancez nautilus

3. Dans le champ Emplacement, remplacez le contenu courant par :

/etc

4. Faites dfiler les rpertoires pour trouver le fichier passwd. Double-cliquez sur ce fichier. Remarquez que le fichier
/etc/passwd est affich dans votre fentre. Slectionnez le bouton Prcdent pour revenir la liste.

5. Vous pouvez changer la taille des icnes et des polices dans nautilus en slectionnant les boutons et + droite du
champ Emplacement. Slectionnez-les, choisissez la taille de votre choix.

6. droite de ces boutons se trouve le bouton Voir en tant qu'icnes. Slectionnez-le et notez vos choix. Slectionnez
Voir en tant que liste du menu droulant. Vous verrez que les donnes dans la partie principale de la fentre
ressemble une longue liste. Utilisez de nouveau les boutons et + pour slectionner une taille raisonnable.

7. Passez dans votre rpertoire personnel en slectionnant le bouton Rp perso.

8. Dmarrez un terminal gnome-terminal en appuyant sur le bouton droit de la souris sur la fentre d'arrire-plan et en
slectionnant Nouveau terminal. Dans ce terminal, crez un nouveau fichier :

touch nouveaufichier

Remarquez que le fichier apparat pratiquement immdiatement dans nautilus.

9. Cliquez avec le bouton droit de la souris sur l'icne NouveauFichier. Slectionnez Dplacer dans la corbeille.
Affichez le contenu de votre rpertoire dans le terminal gnome-terminal et notez que le fichier n'est plus l.

10. Double-cliquez sur l'icne Corbeille du bureau. Notez que le fichier nouveaufichier est maintenant dans la corbeille.
Slectionnez le fichier dans la corbeille et faites-le glisser dans la fentre nautilus affichant la fentre /home/etudiant.

11. Slectionnez la fentre gnome-terminal et confirmez que nouveaufichier est bien dans votre rpertoire personnel.
1/2
Navigation dans le Systme de Fichiers l'aide de GNOME

Supprimez le fichier :

rm nouveaufichier

Notez que le fichier disparat de la fentre nautilus, mais n'apparat pas dans la corbeille.

12. Fermez les fentres nautilus et Corbeille. Dconnectez-vous du systme X Window.

2/2
Le Shell bash

Section 4 Exercices
Le Shell bash
Dure Estime : 45 Minutes
Objectif : Devenir familier avec les fonctions, la syntaxe et l'utilisation de
plusieurs commandes essentielles de manipulation de
fichiers et de rpertoires. Combiner ces commandes de manire utile
pour accomplir des tches utilisateur communes.

Configuration de Dpart : Un systme Linux install et fonctionnant,


avec un compte utilisateur sans privilges appel etudiant
avec le mot de passe etudiant.

Squence 1 : Organisation des rpertoires et des fichiers

Scnario :
Encore une fois, des fichiers se sont accumuls dans votre rpertoire personnel. Vous avez dcid qu'il est temps de tout
rorganiser. Vous prvoyez de crer plusieurs sous-rpertoires et de copier et dplacer vos fichiers selon votre
organisation. Vous possdez galement plusieurs fichiers inutiles qui doivent tre supprims.

Tches :

1. Connectez-vous sur tty1 en tant qu'utilisateur etudiant avec le mot de passe etudiant.

2. Ds que vous tes connect sur le systme, vous devriez tre dans votre rpertoire personnel. Utilisez la commande
print working directory (afficher le rpertoire de travail) pour vous en assurer.

$ pwd
/home/etudiant

3. Vous allez maintenant utiliser la commande touch pour crer les fichiers ncessaires pour cette squence. Les dtails
sur le fonctionnement de l'extension de la commande suivante seront donns dans une autre section. Pour l'instant,
saisissez exactement la ligne suivante comme vous la voyez (avec les accolades {} et le tiret de soulignement entre
les groupes). Demandez un autre tudiant de bien vrifier votre commande avant d'appuyer sur la touche Entre.

$ touch {rapport,memo,graph}_{sep,oct,nov,dec}_{a,b,c}_{1,2,3}

4. Utilisez la commande ls pour examiner les rsultats de la dernire commande. Vous devriez trouver que 108
nouveaux fichiers vides ont t crs dans votre rpertoire personnel (vous n'avez pas besoin de compter ;-) ). Ces
fichiers reprsentent les fichiers de donnes que vous allez utiliser dans le reste de cette squence. Si, pour une raison
quelconque, vous ne voyez pas ces fichiers, demandez de l'aide; sans ces fichiers le reste de cet exercice ne
fonctionnera pas.

5. Afin d'organiser vos fichiers, vous devez d'abord crer de nouveaux rpertoires. Utilisez mkdir pour crer des sous-
rpertoires directement dans votre rpertoire personnel :

$ mkdir a_rapports
$ mkdir septembre octobre novembre decembre

De nouveau, utilisez ls pour examiner votre travail.

1/4
Le Shell bash

6. Crez des sous-rpertoires supplmentaires dans l'un de vos nouveaux rpertoires l'aide des commandes suivantes :

$ cd a_rapports
pour changer de rpertoire. Puis :

$ mkdir un deux trois

Utilisez ls pour vrifier que vous avez trois nouveaux rpertoires appels un, deux et trois dans le sous-rpertoire
a_rapports.

7. Commencez par dplacer tous les rapports b hors de votre rpertoire personnel et groupez les par mois. Lorsque
vous travaillez avec des caractres gnriques compliqus, il est toujours bon de pr-vrifier les oprations pour
s'assurer que vous manipulez les bons fichiers. Pour cela, vous pouvez remplacer votre commande avec une
commande inoffensive qui utilise les caractres gnriques dsirs.

$ cd
$ ls -l *dec_b_?

Vous devriez voir affich les 9 fichiers decembre , b . Dplacez l'un d'entre eux dans le rpertoire decembre :

$ mv graph_dec_b_1 decembre

Maintenant, dplacez tous les autres avec :

$ mv *dec_b_? decembre

Affichez le contenu du sous-rpertoire decembre pour vrifier que l'opration de dplacement a bien fonctionn :

$ ls -l decembre
total 0
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 graph_dec_b_1
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 graph_dec_b_2
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 graph_dec_b_3
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 memo_dec_b_1
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 memo_dec_b_2
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 memo_dec_b_3
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 rapport_dec_b_1
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 rapport_dec_b_2
-rw-rw-r-- 1 etudiant etudiant 0 Oct 16 22:16 rapport_dec_b_3

8. Dplacez tous les rapports b restants dans leur rpertoire respectif :


$ mv *nov_b_? novembre
$ mv *oct_b_? octobre
$ mv *sep_b_? septembre

9. Vous allez maintenant rassembler tous les rapports a dans leurs rpertoires numrots respectifs. Notez
l'utilisation du symbole ~ comme raccourci pour votre rpertoire personnel. La combinaison du caractre gnrique et
du modle spcifie tous les fichiers finissant en _a_1 dans votre rpertoire personnel.

$ cd a_rapports
$ mv ~/*_a_1 un/

Les fichiers septembre a1 sont vieux et inutiles. Utilisez echo pour tre sr que vous avez cr un modle ne
correspondant qu' ces fichiers, puis supprimez les et vrifiez ensuite que les autres fichiers a1 ont t dplacs
2/4
Le Shell bash

correctement :

$ cd un
$ echo *sep*
$ rm *sep*
$ ls
graph_dec_a_1 graph_oct_a_1 memo_nov_a_1 rapport_dec_a_1 rapport_oct_a_1
graph_nov_a_1 memo_dec_a_1 memo_oct_a_1 rapport_nov_a_1

10. Dplacez les derniers rapports a2 et a3 dans leur rpertoire respectif. Pour rendre la chose encore plus
intressante, nous allons les dplacer du rpertoire courant, en utilisant les chemins absolus et relatifs. Tout d'abord,
utilisez pwd pour identifier le rpertoire courant :

$ pwd
/home/etudiant/a_rapports/un

Vrifiez que le modle fasse rfrence aux fichiers a_2 avec echo, puis dplacez les en utilisant le chemin absolu :

$ echo /home/etudiant/*a_2*
$ mv /home/etudiant/*a_2* /home/etudiant/a_rapports/deux

Mme si votre rpertoire courant est /home/etudiant/a_rapports/un, vous pouvez dplacer les fichiers de
/home/etudiant/ vers /home/etudiant/a_rapports/deux car vous avez spcifi les chemins des fichiers dans ce cas, les
chemins absolus.

Maintenant, dplacez les fichiers a_3 en utilisant les chemins relatifs. Encore une fois, vrifiez tout d'abord que le
modle fasse rfrence aux bons fichiers.

$ echo ../../*a_3*
$ mv ../../*a_3* ../trois

11. Retournez dans votre rpertoire personnel et utilisez ls pour vrifier que les seuls fichiers restants dans ce rpertoire
sont les fichiers c (c--d, graph_dec_c_1, graph_dec_c_2, ...).

12. Les fichiers de rapport c1 et c2 pour chaque mois sont importants et vous voulez en faire une copie de
sauvegarde dans un autre rpertoire :

$ mkdir /tmp/archive
$ cp rapport*[12] /tmp/archive/

De plus, tous les fichiers de rapport pour le mois de dcembre devraient tre sauvegards dans le rpertoire
/tmp/archive. Notez l'utilisation de l'option -i pour obtenir un prompt interactif de la commande cp avant d'craser un
fichier.

$ cp -i rapport_dec* /tmp/archive/
cp: overwrite `/tmp/archive/rapport_dec_c_1'? n
cp: overwrite `/tmp/archive/rapport_dec_c_2'? n

13. Maintenant que vous avez sauvegard les nouveaux fichiers c qui vous sont importants, vous voulez supprimer
tous les fichiers qui sont encore dans votre rpertoire personnel. L'examen de ces fichiers rvle que le caractre
gnrique *c* leur correspondra tous. Cependant pour vous assurer que vous n'allez pas supprimer d'autres fichiers
par accident, essayez les commandes suivantes et examinez la sortie :

$ ls *c*
[ sortie omise ]

3/4
Le Shell bash

$ ls -Fd *c*
[ sortie omise ]

14. Supprimez les fichiers c restants dans votre rpertoire personnel. Une fois de plus, nous utiliserons echo avant
d'excuter une commande destructive.

$ echo *c_[1-3]
$ rm *c_[1-3]
$ ls
a_rapports decembre novembre octobre Projets septembre

Rsultats :
Un rpertoire personnel plus organis avec des fichiers placs dans les sous-rpertoires appropris et certains fichiers
sauvegards dans /tmp/archive.

4/4
Permissions de Fichiers

Section 5 Exercices
Permissions de Fichiers
Dure Estime : 30 Minutes
Objectif : Devenir familier avec les fonctions, la syntaxe et l'utilisation de
plusieurs commandes essentielles de modification de
permissions de fichier. Combiner ces commandes de manires utiles pour
accomplir des tches d'utilisateur communes.

Configuration de Dpart : Un systme Linux install et fonctionnant avec un compte


etudiant existant

Squence 1 : Dfinition de permissions de fichier

Tches :

1. Symboliquement (par ex, rwxr-xr-x), quelles sont les permissions 644, 755, 000, 711, 700, 777, 555, 111, 600, 731 ?

644:____________________

755:____________________

000:____________________

711:____________________

700:____________________

777:____________________

555:____________________

111:____________________

600:____________________

731:____________________

2. Ayant un fichier avec les permissions 755, quelles commandes pourraient rgler les permissions sur r-xr-r- ?

______________________________________________________________________
______________________________________________________________________

3. Vous venez juste de tlcharger un fichier excutable de l'internet. Quelle tape devez-vous accomplir avant de
pouvoir l'excuter ? Donnez deux diffrentes faons d'effectuer cette tape.
1/3
Permissions de Fichiers

______________________________________________________________________
______________________________________________________________________

2/3
Permissions de Fichiers

Rponses la Squence 1 :

1. Permissions de fichiers symboliques (seules les permissions sont affiches, pas les indicateurs de types de fichiers) :

644 : rw-r-r--

755 : rwxr-xr-x

000 : ---------

711 : rwx--x--x

700 : rwx------

777 : rwxrwxrwx

555 : r-xr-xr-x

111 : --x--x--x

600 : rw-------

731 : rwx-wx--x

2. Plusieurs possibilits :

chmod 544 nomdefichier


chmod u-w,go-x nomdefichier
chmod u=rx,go=r nomdefichier

3. La commande doit tre rendue excutable. Les commandes suivantes peuvent tre utilises (il existe galement
d'autres commandes) :

chmod +x nomdecommande
chmod 755 nomdecommande

3/3
Le Systme de Fichiers Linux

Section 6 Exercices
Le Systme de Fichiers Linux
Dure Estime : 1 Heure
Objectif : Dvelopper une meilleure connaissance des principes de base du
systme de fichiers Linux.

Configuration de Dpart : Un systme Linux install et fonctionnant.

Squence 1 : Dterminer l'utilisation du disque

Scnario :
Vous voulez connatre la quantit d'espace libre sur chaque systme de fichiers de votre systme. De plus, vous voulez
obtenir une liste des rpertoires qui occupent le plus de place sur votre systme.

Tches :

1. Utilisez df pour dterminer la quantit d'espace libre sur chaque systme de fichiers. La sortie devrait ressembler
l'exemple suivant (bien-que, selon l'installation de votre systme, la sortie puisse changer).

$ df
SysFichier 1k-blocs Utilis Dispo. Util% Mont sur
/dev/hda5 12880648 1634344 10591988 14% /
/dev/hda1 36566 2476 32202 8% /boot

2. Notez que l'opration par dfaut de la commande df est d'afficher ses informations en blocs. Essayez d'utiliser les
options -h et -H pour afficher les rsultats de manire plus lisible :

$ df -h
SysFichier Tail. Util.Disp. Uti% Mont sur
/dev/hda5 12G 1.6G 10G 14% /
/dev/hda1 36M 2.5M 31M 8% /boot

$ df -H
SysFichier Tail. Util.Disp. Uti% Mont sur
/dev/hda5 13G 1.7G 10G 14% /
/dev/hda1 37M 2.6M 32M 8% /boot

Quelle est la diffrence entre les deux options (utilisez 'LANG=us man df') ?

...........................................................................
...........................................................................

3. Utilisez la commande du (disk usage) depuis votre rpertoire personnel pour dterminer l'espace occup par tous vos
fichiers. Utilisez l'option -h pour obtenir une sortie plus lisible.

1/5
Le Systme de Fichiers Linux

Squence 2 : Utiliser find

Tches :

Connectez vous en tant que etudiant.


Formez et excutez une commande find qui produit le rsultat dcrit dans chacune des tapes suivantes.

Vous aurez peut-tre besoin de consulter la page man de find. Souvenez vous que vous pouvez effectuer des recherches
dans les pages man avec /chane.

Un certain nombre de messages Permission denied (permission refuse) s'afficheront lorsque find essaiera de
traverser des rpertoires auxquels vous n'avez pas d'accs de lecture ne vous souciez pas de ces messages. Vous pouvez
mme supprimer ces messages d'erreur en ajoutant 2> /dev/null votre commande find (plus ce sujet dans la prochaine
section).
La premire rponse est dj remplie pour vous. Essayez cette commande, puis travaillez sur les autres.

1. Affichez la liste de tout ce qui appartient l'utilisateur games dans /var/lib.

$ find /var -user games 2> /dev/null

2. Affichez la liste de tout ce qui appartient l'utilisateur root et au groupe mail dans /var.

______________________________________________________________________

3. Affichez une liste du genre ls -l de tout ce qui n'appartient pas aux utilisateurs root, bin ou etudiant sur le
systme.

______________________________________________________________________

4. Affichez une liste du genre ls -l de tous les fichiers de taille suprieure un million de caractres dans /usr/bin.

______________________________________________________________________

5. Excutez une commande file sur tous les fichiers dans /etc/mail.

____________________________________________________________________________________

6. Affichez une liste du genre ls -l de tous les fichiers rguliers qui appartiennent l'utilisateur etudiant dans
/tmp (man find).

____________________________________________________________________________________

7. Modifiez la commande ci-dessus pour afficher une liste du genre ls -l de tous les fichiers rguliers qui
appartiennent l'utilisateur etudiant dans /tmp et dont l'heure de modification est suprieure il y a 120 minutes
(astuce : man find).

____________________________________________________________________________________

8. Modifiez la commande ci-dessus pour supprimer tous les fichiers rguliers qui appartiennent l'utilisateur
etudiant dans /tmp dont l'heure de modification est suprieure il y a 120 minutes et pour avoir l'invite find
demander confirmation de suppression pour chacun d'entre eux. Vu que vous utilisez l'option interactive, n'ignorez
pas les messages d'erreur ; c'est--dire ne finissez pas votre commande avec 2> /dev/null. Refusez toute suppression
de fichiers.

____________________________________________________________________________________

2/5
Le Systme de Fichiers Linux

Squence 3 : Archivage et compression

Scnario :
Le disque dur primaire de votre systme commence faire beaucoup de bruit chaque fois que vous l'utilisez et vous
souponnez qu'il est prt mourir et ainsi perdre vos donnes. Vu que la dernire sauvegarde du systme date de deux
ans et demi, vous dcidez de sauvegarder manuellement quelqu'uns de vos fichiers les plus importants. Le rpertoire
/tmp est stock dans une partition sur un disque dur diffrent. Vous allez donc y sauvegarder vos fichiers
temporairement. (Cependant, vu que tmpwatch efface les fichiers dans /tmp qui n'ont t pas accds de 10 jours, vous ne
devriez pas y garder vos donnes importantes trop longtemps).

Tches :

1. Utilisez find pour trouver tous les fichiers sur /home qui appartiennent l'utilisateur etudiant. Puis passez ces noms
de fichiers tar pour les ajouter une archive tar stocke dans /tmp :

$ find /home -user etudiant -exec tar rvf /tmp/copie.tar {} \;

2. Sauvegardez le contenu de /etc dans une autre archive tar dans /tmp :

$ tar cvf /tmp/copieconf.tar /etc

3. Affichez les deux nouveaux fichiers et notez leur taille :

$ ls -lh /tmp/*.tar
-rw-rw-r-- 1 etudiant etudiant 1.9M Oct 17 23:06 /tmp/copie.tar
-rw-rw-r-- 1 etudiant etudiant 5.4M Oct 18 00:27 /tmp/copieconf.tar

Taille du fichier copie.tar __________________.

Taille du fichier copieconf.tar __________________.

4. Utilisez gzip pour compresser vos fichiers. Puis notez les nouvelles tailles de fichiers :

$ cd /tmp
$ gzip -v *.tar
$ ls -lh *tar*
-rw-rw-r-- 1 etudiant etudiant 580k Oct 17 23:06 copie.tar.gz
-rw-rw-r-- 1 etudiant etudiant 913k Oct 18 00:27 copieconf.tar.gz

Taille du fichier copie.tar.gz __________________.

Pourcentage conomis en compressant le fichier copie.tar.gz __________________.

Taille du fichier copieconf.tar.gz __________________.

Pourcentage conomis en compressant le fichier copieconf.tar.gz __________________.

5. Dcompressez les fichiers, re-compressez les avec bzip2 et notez les nouvelles tailles de fichiers :

$ gunzip *.gz
$ ls -lh *tar
-rw-rw-r-- 1 etudiant etudiant 1.9M Oct 17 23:06 copie.tar
-rw-rw-r-- 1 etudiant etudiant 5.4M Oct 18 00:27 copieconf.tar

$ bzip2 -v *tar
3/5
Le Systme de Fichiers Linux

$ ls -lh *tar*
-rw-rw-r-- 1 etudiant etudiant 510k Oct 17 23:06 copie.tar.bz2
-rw-rw-r-- 1 etudiant etudiant 791k Oct 18 00:27 copieconf.tar.bz2

Taille du fichier copie.tar.bz2 __________________.

Pourcentage conomis en compressant le fichier copie.tar.bz2 __________________.

Taille du fichier copieconf.tar.bz2 __________________.

Pourcentage conomis en compressant le fichier copieconf.tar.bz2 __________________.

6. Sur un systme UNIX traditionnel, les tapes d'archivage avec tar et de compression d'archive s'effectuent
sparment, tout comme vous l'avez fait dans les tapes prcdentes. Sur un systme Linux, avec la commande GNU
tar, le fichier tar peut tre filtr automatiquement par de nombreux programmes de compression durant la cration du
fichier. Essayez les tapes suivantes. Les commandes tar produiront quelques messages d'erreur car les utilisateurs
sans privilges n'ont pas d'accs de lecture sur certains fichiers de /etc ; dans le but de cet exercice, vous pouvez les
ignorer.

$ rm copieconf.tar.bz2
$ tar czf test1.tgz /etc
$ tar cjf test2.tbz /etc

$ file test*
test1.tgz: gzip compressed data, deflated, last modified: Wed Oct 18 01:52:11 2000, os: Unix
test2.tbz: bzip2 compressed data, block size = 900k

Rsultats :
Vos donnes importantes sont archives, compresses et sauvegardes dans le rpertoire /tmp.

4/5
Le Systme de Fichiers Linux

Rponses la Squence 2 :

2. find /var user root -group mail 2> /dev/null

3. find / -not -user root -not -user bin -and -not -user etudiant -ls 2> /dev/null
ou
find / ! -user root ! -user bin ! -user etudiant -exec ls -ld {} \; 2> /dev/null

4. find /usr/bin -size +1000000c -ls 2> /dev/null

5. find /etc/mail -exec file {} \; 2> /dev/null

6. find /tmp -user etudiant -and -type f -ls 2> /dev/null

7. find /tmp -user etudiant -and -mmin +120 -and -type f -ls 2> /dev/null

8. find /tmp -user etudiant -and -mmin +120 -and -type f -ok rm {} \;

5/5
Entre et Sortie Standards et Tubes

Section 7 Exercices
Entre et Sortie Standards et Tubes
Dure Estime : 30 Minutes
Objectif : Devenir familier avec les entres et les sorties standard et les
tubes implments sur un systme Linux.

Configuration de Dpart : Un systme Linux install et fonctionnant

Squence 1 : Entre et Sortie Standard

Tches :

1. Ouvrez votre diteur de texte prfr et crez deux fichiers que nous utiliserons plus loin dans cet exercice.

paquetages1.txt devrait contenir les huit lignes suivantes :

amanda
galeon
metacity
mozilla
postgresql
procinfo
rpmfind
squid

paquetages2.txt devrait contenir les six lignes suivantes :

anaconda
openssh
gnome-core
samba
sendmail
xscreensaver

2. cat est le filtre de texte de Linux le plus simple. Son rle est de prendre son entre depuis un fichier dont le nom est
fourni en argument sur la ligne de commande ou depuis une entre standard - et de l'envoyer, sans changements, la
sortie standard. Testez cat avec le fichier paquetages1.txt :

$ cat paquetages1.txt

3. Si aucun argument n'est fourni cat, il s'attend recevoir une entre standard. Cela signifie que si vous tapez cat
l'invite shell et appuyez sur <Entre>, rien ne se passera. En vrit, cat observe patiemment l'entre standard, en
attendant l'arrive d'une entre. Si vous tapez des caractres et appuyez sur <Entre>, cat envoie l'entre tape la
sortie standard rptant effectivement ce qui a t tap. Pour terminer la commande cat, envoyez un <Ctrl-d> du
clavier. Ceci est le signal universel de fin d'entre.

$ cat
Saisissez du texte, puis appuyez sur Entre.
^d

1/5
Entre et Sortie Standards et Tubes

4. La plupart des commandes de traitement de texte Linux sont implmentes en tant que filtres c'est dire qu'elles
peuvent lire l'entre standard, y effectuer un traitement, puis l'envoyer la sortie standard. Ces commandes se
comportent exactement comme cat, mais leurs sorties sont diffrentes de leurs entres.

tr, prsent dans la section, est l'un de ces filtres. Si vous lui donnez deux chanes en arguments, tr lit l'entre
standard, transformant les lettres de la premire chane en lettres de la deuxime chane, et crit la chane traduite en
sortie standard.

Rptez l'exemple prcdent, en utilisant tr au lieu de cat. Donnez lui des arguments conus transformer toutes les
voyelles de son entre en majuscules.

$ tr 'aeiou' 'AEIOU'
Saisissez du texte, puis appuyez sur Entre.
^d

5. Pour indiquer au shell que la sortie d'une commande ne devrait pas tre envoye la sortie standard, mais qu'elle
devrait tre redirige vers un fichier, redirigez la sortie standard avec le symbole >.

Rptez le premier exemple cat, en redirigeant la sortie standard vers le fichier paquetages1.fichiercat. Cela placera
tout ce qui aurait d aller l'cran dans le fichier paquetages1.fichiercat, en crant une copie du fichier
paquetages1.txt. Excutez cat sur le fichier de sortie et vrifiez qu'il contienne le mme contenu que le fichier original
avec diff et ls.

$ cat paquetages1.txt > paquetages1.fichiercat


$ cat paquetages1.fichiercat
$ diff paquetages1.txt paquetages1.fichiercat
$ ls -l paquetages1*

6. Pour modifier un fichier existant avec le contenu d'un autre fichier, utilisez >>.

Ajoutez paquetages2.txt paquetages1.fichiercat et examinez les rsultats.

$ cat paquetages2.txt >> paquetages1.fichiercat


$ cat paquetages1.fichiercat

7. Si aucun nom de fichier n'est pass en argument cat et que l'entre standard est redirige vers un fichier, tout ce qui
est tap jusqu ce que l'entre soit termine avec <Ctrl-d> sera redirige vers le fichier. Cela permet de crer
facilement un nouveau fichier texte.

$ cat > saisi.txt


Cette fois, lorsque du texte est saisi au clavier,
il n'est pas affich l'cran.
Il est en fait redirig vers le fichier saisi.txt
^d

$ ls -l saisi.txt
$ cat saisi.txt

8. Rptez l'tape prcdente en substituant la commande cat par tr.

$ tr 'aeiou' 'AEIOU' > fichiertr.txt


2/5
Entre et Sortie Standards et Tubes

Cette fois, lorsque du texte est saisi au clavier,


il n'est pas affich l'cran avec les transformations faites.
Il est en fait redirig vers le fichier fichiertr.txt
^d

$ ls -l fichiertr.txt
$ cat fichiertr.txt

9. Utilisez set -o pour afficher le rglage actuel de l'option bash noclobber (off). Vrifiez que vous pouvez appliquer la
fonction clobber des fichiers lors de la redirection de sortie vers un fichier.

$ set -o
$ ls -l /tmp > fichiertr.txt
$ ls -l fichiertr.txt
$ cat fichiertr.txt

10. Utilisez set pour modifier l'option noclobber, puis vrifiez son fonctionnement :

$ set -o noclobber
$ echo "nouveau texte" > fichiertr.txt
bash: foo: cannot overwrite existing file

11. cat accepte soit un nom de fichier, soit une entre standard redirige d'un fichier. Testez les deux commandes
suivantes :

$ cat paquetages1.txt
$ cat < paquetages1.txt

12. Cependant, tr n'accepte pas les noms de fichier en argument son entre doit seulement venir d'une entre standard.

$ tr 'aeiou' 'AEIOU' < paquetages1.txt

13. La sortie et l'entre standard peuvent tre toutes deux rediriges, comme dans l'exemple suivant. Dirigez l'entre de
tr, comme au-dessus, du fichier paquetages1.txt, mais cette fois, redirigez la sortie standard. Aucune sortie n'est
envoye l'cran elle est la place stocke dans le fichier paquetages1.fichiertr.txt.

$ tr 'aeiou' 'AEIOU' < paquetages1.txt > paquetages1.fichiertr.txt


$ ls -l paquetages1.txt paquetages1.fichiertr.txt
$ cat paquetages1.fichiertr.txt

3/5
Entre et Sortie Standards et Tubes

Squence 2 : Exercices

Les rponses sont sur la page suivante si vous en avez besoin, mais essayez de complter chaque exercice en utilisant les
informations de cette section et les pages de systme man.

1. Effectuez une copie de la page formate man pour la commande cal dans votre rpertoire maison, appele cal.man.

2. Quelle(s) commande(s) d'une ligne produiriez-vous pour configurer vos flots d'entre et de sortie de telle manire que
le texte que vous tapez au clavier soit imprim ?

_______________________________________________________________________________________

3. Comment imprimeriez-vous une liste longue de fichiers dans /usr/bin dont les noms commencent par c ou d ?
_______________________________________________________________________________________

4/5
Entre et Sortie Standards et Tubes

Rponses la squence 2

1. man cal > cal.man

2. lpr

lpr imprime le contenu des noms de fichiers en arguments. Si aucun argument n'est donn, lpr lit de l'entre standard.
L'entre tape au clavier sera imprime aprs que vous ayez appuy sur <ctrl-d>.

3. ls -l /usr/bin/[cd]* | lpr

5/5
Introduction au Traitement de Chanes

Section 8 Exercices
Introduction au Traitement de Chanes
Dure Estime : 20 Minutes

Objectif : Devenir familier avec plusieurs utilitaires de traitement de texte


disponibles sur un systme Linux.

Configuration de Dpart : Un systme Linux install et fonctionnant, et une copie de


/etc/passwd dans votre rpertoire personnel.

Squence 1 : Traitement de chanes de base

Tches :

1. Effectuez une copie de /etc/passwd dans votre rpertoire personnel.

$ cd
$ cp /etc/passwd .

2. Pour chaque compte sur le systme, il y aura une ligne dans /etc/passwd. l'aide de wc, comptez le nombre
de lignes dans le fichier passwd.

$ wc -l passwd

Nombre de comptes sur votre systme _____________________

3. Produisez une liste des shells en utilisation sur la machine et mettez-la dans un autre fichier :

$ cut -d: -f7 passwd > shells

4. Affichez le contenu de votre nouveau fichier shells avec cat. Bien que le fichier contienne des informations,
vous verrez qu'il n'est pas trs bien organis. Triez les lignes de la sortie et mettez les donnes tries dans un
nouveau fichier :

$ sort shells > shells.tries

5. Votre fichier contient de nombreuses occurrences de la mme valeur. Utilisez uniq pour obtenir le nombre de fois
chaque valeur apparat :

$ uniq -c shells.tries > uniq.shells.tries

Pourquoi avez-vous eu besoin de trier la sortie avant de la passer uniq ?

1/3
Introduction au Traitement de Chanes

6. Pour produire une liste trie numriquement en ordre dcroissant de tous les shells en utilisation sur la machine
(bien-sr, les nombres exacts sur votre machine peuvent tre diffrents de ceux ci-dessous) :

$ sort -nr uniq.shells.tries


30 /sbin/nologin
6 /bin/bash
1 /sbin/shutdown
1 /sbin/halt
1 /sbin/sync
1

Rsultats :
Une liste trie numriquement en ordre dcroissant des shells assigns aux comptes d'utilisateur sur la machine.

Squence 2 : Exercices supplmentaires sur le traitement de chanes

Composez puis crivez la solution pour chaque exercice. Souvenez vous que la rponse est la commande que vous
composez et non pas sa sortie. Les rponses sont donnes la fin de l'exercice, mais essayez de travailler tout seul sur
chaque tche avant de regarder les rponses. Chaque rponse doit tre une seule ligne de commande et devrait
implmenter au moins un tube. La commande aspell n'a pas de page man ; comment pouvez-vous obtenir de l'aide ?

Tches :

1. Combien de fichiers se trouvent dans le rpertoire /usr/bin ? La sortie devrait tre un nombre entier. c

______________________________________________________________________________________

2. Effectuez un contrle d'orthographe du dictionnaire du systme sur le fichier /usr/share/doc/nautilus-


*/NEWS.

______________________________________________________________________________________

3. Combien de mots uniques apparaissent dans la sortie de la question 2 ?

______________________________________________________________________________________

2/3
Introduction au Traitement de Chanes

Rponses la squence 2 :

1. ls -l /usr/bin | wc -l

2. aspell -l < /usr/share/doc/nautilus-*/NEWS

3. aspell -l < /usr/share/doc/nautilus-*/NEWS | sort | uniq | wc -l

3/3
Traitement de Chanes avec des Expressions Rgulires

Section 9 Exercices
Traitement de Chanes avec des Expressions
Rgulires
Dure Estime : 60 Minutes

Objectif : Devenir familier avec plusieurs utilitaires de traitement de texte


disponibles sur un systme Linux.

Configuration de Dpart : Un systme Linux install et fonctionnant, et une copie de


/etc/passwd dans votre rpertoire personnel.

Squence 1 : Traitement de chanes avec grep

Tches :
1. Utilisez grep pour afficher la ligne pour tout compte qui commence avec la lettre g dans la copie de
/etc/passwd de votre rpertoire personnel :

$ grep ^g passwd
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin

Dans cet exemple, comme dans les suivants, votre sortie peut tre diffrente.

2. Affichez la ligne pour tout compte qui utilise le shell bash :


$ grep 'bash$' passwd
root:x:0:0:root:/root:/bin/bash
etudiant:x:500:500::/home/etudiant:/bin/bash
visiteur:x:501:501::/home/visiteur:/bin/bash

3. Affichez la ligne pour tout compte qui n'utilise pas le shell bash :

$ grep -v 'bash$' passwd


bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
... sortie tronque ...

4. Pour illustrer l'utilisation de diff, crez une copie modifie de passwd. Commencez par utiliser grep pour
supprimer toutes les lignes qui contiennent les lettres N ou P .

$ grep -v '[NP]' passwd > passwd.modifie

5. Pour la dernire modification, utilisez tr pour transformer les majuscules restantes en minuscules :

$ tr "A-Z" "a-z" < passwd.modifie > passwd.modifie2

6. Utilisez cat pour afficher votre fichier passwd original et le nouveau fichier passwd.modifie2. Les
diffrences ne sont pas faciles voir, mme dans ce petit fichier. Imaginez si votre fichier passwd contenait des
entres pour des milliers d'utilisateurs ! Utilisez diff pour produire une liste des modifications entre les deux
1/6
Traitement de Chanes avec des Expressions Rgulires

fichiers :

$ diff passwd.modifie2 passwd


14a15,16
> ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
> nobody:x:99:99:Nobody:/:/sbin/nologin
16a19,23
> nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
> sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
> rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
> rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
> nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
20c27
< xfs:x:43:43:x font server:/etc/x11/fs:/sbin/nologin
---
> xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin

Encore une fois, votre sortie peut tre diffrente.

2/6
Traitement de Chanes avec des Expressions Rgulires

Squence 2 : Expressions rgulires et traitement de chanes

Composez, puis crivez la solution pour chaque tche ci-dessous. Souvenez vous que la rponse est la commande que
vous composez et non pas sa sortie. Les rponses sont donnes la fin de l'exercice, mais essayez de travailler tout
seul sur chaque tche avant de regarder les rponses.

Tches :

1. Essayez d'utiliser grep pour produire en sortie les lignes du fichier /usr/share/dict/words qui contiennent
un modle de texte. Par exemple, affichez les lignes qui contiennent fish :

$ grep fish /usr/share/dict/words


blowfish
bluefish
codfish
... sortie tronque ...
unselfish
unselfishly
unselfishness

2. En utilisant la page man de grep, construisez et testez une commande qui affichera chaque ligne contenant le
modle fish et les deux lignes prcdant et succdant chaque ligne trouve (pour obtenir un contexte plus
tendu).

_______________________________________________________________________________________

3. En utilisant la page man de grep, construisez et testez une commande qui affichera seulement le nombre de lignes
sur lesquelles le modle fish apparat.

_______________________________________________________________________________________

4. En utilisant la page man de grep, construisez et testez une commande qui affichera une ligne pour chaque
occurrence du modle fish dans le fichier words, y compris le numro de ligne correspondante. Sur quelle ligne
le mot starfish a-t-il t trouv ?

_______________________________________________________________________________________

5. Affichez les mots de /usr/share/dict/words qui contiennent t, une voyelle et sh.

_______________________________________________________________________________________

6. Crez une expression rgulire qui correspond aux mots abominable, abominate, anomie et atomize
(mais aucun autre mot) dans le fichier /usr/share/dict/words.

_______________________________________________________________________________________

7. Combien de mots dans le fichier /usr/share/dict/words contiennent t, une voyelle et sh la fin du mot ?
Construisez, puis excutez une commande qui ne produit que le compte ?

_______________________________________________________________________________________

8. Affichez les mots du fichier /usr/share/dict/words qui contiennent exactement seize lettres.
3/6
Traitement de Chanes avec des Expressions Rgulires

_______________________________________________________________________________________

9. Les sous-rpertoires de /usr/share/doc sont de bonnes sources d'informations (sans parler des fichiers de
texte clair). Nous allons utiliser des fichiers de ce rpertoire pour les tches suivantes.

Affichez les noms des fichiers rguliers dans /usr/share/doc/bash-2.05b qui contiennent le mot
expansion.

_______________________________________________________________________________________

10. Affichez le nombre de fois que le modle Linux apparat dans les fichiers rguliers de
/usr/share/doc/bash-2.05b, mais n'affichez pas le nombre de fichiers o le modle n'apparat pas.
Astuce : affichez le nombre de tous les fichiers, examinez la sortie, puis pensez une manire de supprimer de la
sortie les lignes correspondant un certain modle.

_______________________________________________________________________________________

11. Affichez le nom de tous les fichiers sous /usr/share/doc qui contiennent le modle Havoc.

_______________________________________________________________________________________

4/6
Traitement de Chanes avec des Expressions Rgulires

Squence 3 : dition de texte avec les expressions rgulires

Tches :

Prenez, par exemple, un fichier nomm cats contenant la liste de mots suivant :

cat
catalog
concatenate
polecat
Cat

Pour chaque commande sed ci-dessous, indiquez les lignes qui ne changeront pas ; pour les lignes qui vont changer,
crivez la nouvelle ligne.

1. sed 's/cat/dog/' cats


cat
catalog
concatenate
polecat
Cat

2. sed 's/[Cc]at/dog/' cats


cat
catalog
concatenate
polecat
Cat

3. sed 's/\<[Cc]at/dog/' cats


cat
catalog
concatenate
polecat
Cat

4. sed 's/[Cc]at\>/dog/' cats


cat
catalog
concatenate
polecat
Cat

5. sed 's/\<[Cc]at\>/dog/' cats


cat
catalog
concatenate
polecat
Cat

6. sed 's/\<[Cc]at\>/& and dog/' cats


cat
catalog
concatenate
polecat
Cat

7. Crez le fichier cats . Excutez les commandes sed, ci-dessus, et testez vos rponses.

5/6
Traitement de Chanes avec des Expressions Rgulires

Rponses la squence 2

2. grep -B2 -A2 "fish" /usr/share/dict/words

3. grep -c "fish" /usr/share/dict/words

4. grep -n "fish" /usr/share/dict/words

5. grep "t[aeiou]sh" /usr/share/dict/words

6. "^a.omi.*e$"

ou

"\<a.omi.*e\>"
L'astuce dans ce cas est de dterminer ce que les mots ont en commun et ce
qui est diffrent. Notez que le nombre de caractres des mots est l'une des
variables. La syntaxe .* est donc ncessaire.

7. grep -c "t[aeiou]sh$" /usr/share/dict/words

8. grep -c "^................$" /usr/share/dict/words

ou

grep -c "^.\{16\}$" /usr/share/dict/words?)

9. grep -l expansion /usr/share/doc/bash-2.05b/*

10. grep -c "Linux" /usr/share/doc/bash-2.05b/* | grep -v ":0"

11. grep -R -l "Havoc" /usr/share/doc

6/6
Contrle de Processus et scripts bash

Section 10-11 Exercices


Contrle de Processus
Dure Estime : 60 Minutes

Objectif : Utiliser les diffrentes commandes de contrle de processus.

Configuration de Dpart : Un systme Linux install et fonctionnant.


Un compte d'utilisateur appel etudiant avec le mot de
passe etudiant.

Squence 1 : Contrle de Processus

Scnario :
Dans cette squence, vous allez commencer l'excution de plusieurs processus, puis utiliser les fonctions de contrle de
travail de bash pour les grer et les contrler. Vous changerez de consoles virtuelles. Faites attention bien noter
quelle console est utilise pour chaque commande.

Tches :

1. Commencez par vous connecter sur les terminaux virtuels 1 et 2 (tty1, tty2) en utilisant le compte etudiant.

2. Passez sur tty1 et lancez un processus avec la commande suivante :

$ (while true; do echo -n A >> log; sleep 1; done)

3. Notez que ce terminal est maintenant occup avec votre processus (excut en arrire-plan). Le processus que vous
avez lanc ajoute la lettre A toutes les secondes au fichier ~/log. Pour en produire une preuve visuelle, passez
sur tty2 et excutez la commande suivante :

$ tail -f log

Vous devriez voir une squence de caractres A qui augmente en longueur.

4. Passez sur tty1 et interrompez le processus en cours en appuyant sur <Ctrl-z>. Le shell indique que le
processus a t arrt et vous donne un numro de travail de [1]. Passez sur tty2 et vrifiez que le fichier n'est
plus en train de grandir.

5. Passez sur tty1 et relancez le processus, cette fois en arrire-plan. Utilisez jobs pour montrer que le travail [1]
est bien en cours d'excution. Finalement, passez sur tty2 et vrifiez que le fichier est bien en train de grandir :

$ bg
$ jobs

6. Passez sur tty1 et lancez deux autres processus avec les commandes suivantes. (La premire commande est
presque identique la commande que vous avez excut dans l'tape 2. Utilisez la flche vers le haut pour rappeler
cette commande, modifiez le A par un B et ajoutez le symbole & la fin. La deuxime commande excute
simplement la commande prcdente, en changeant le B par un C ) :

$ (while true; do echo -n B >> log; sleep 1; done) &


$ ^B^C

7. Tapez jobs et vrifiez que les trois sont en cours. Passez sur tty2 et vrifiez que le fichier est toujours en train
1/3
Contrle de Processus et scripts bash

de grandir, cette fois avec A , B et C tous ajouts chaque seconde.

8. Dans l'tape 4, vous aviez interrompu le processus en premier plan en appuyant sur <Ctrl-z>. En fait, cela avait
envoy un signal au processus. Utilisez kill pour produire une liste de signaux et leurs noms et numros
correspondants. Puis utilisez kill pour envoyer un signal SIGSTOP au travail [1] pour l'interrompre. Passez sur
tty1 et excutez les commandes suivantes :

$ kill -l
$ kill -19 %1

9. Tapez jobs et vrifiez que le travail [1] indique stopped (arrt). Passez sur tty2 et vrifiez que le travail
[1] s'est bien arrt.

10. Relancez le travail [1] en utilisant kill pour envoyer un signal SIGCONT (18) au processus. Utilisez la
commande jobs et tty2 pour vrifier que les trois travaux sont toujours en excution. (Astuce : rfrez vous
l'tape 8 pour la syntaxe.)

11. Utilisez kill sur les trois processus. Si vous ne spcifiez pas un signal envoyer, kill enverra un signal
SIGTERM (15) par dfaut. Recevant un signal SIGTERM, la plupart des programmes s'arrteront. Aprs avoir
envoy le signal aux travaux [2] et [3], utilisez jobs pour vrifier qu'ils indiquent tous terminated
(termin).

$ kill %2 %3
$ jobs

12. Pour terminer le dernier processus :

$ fg
$ <Ctrl-c>

13. Tapez jobs et vrifiez qu'aucun travail n'est affich. Passez sur tty2 et vrifiez que toute activit ait cess.
Arrtez la commande tail en appuyant sur <Ctrl-c> et dconnectez-vous de ce tty.

Passez sur tty1 et supprimez le fichier ~/log.

Squence 2 : Scripts BASH

Tches :

1. Ecrire un script shell Bash qui va: demander l'utilisateur de saisir un fichier sauvegarder et la destination de
sauvegarde (le fichier doit tre compress dans le rpertoire de destination), vrifier si la valeur retourne par la
commande de compression de fichier est un code d'erreur ou non, et en avertir l'utilisateur.

2. Ecrire un script shell Bash qui va vrifier si les machines (en les prenant en argument de la commande)
192.168.0.X 192.168.0.Y 192.168.0.Z (o X, Y, Z sont compris entre 1 et 10, vous de choisir des valeurs
diffrentes dans cette fourchette) sont actifs au niveau rseau (avec ping -c2 machine, par exemple) en affichant
machine active

2/3
Contrle de Processus et scripts bash

Corrig Squence 2 : Scripts BASH

exemple:

1. Instruction If
#!/bin/bash

# demander l'utilisateur de saisir le fichier sauvegarder et


# la destination
read -p "Saisissez le fichier sauvegarder: " fichier_sauv
read -p "Saisissez la destination: " destination

# compresser le fichier et stocker la valeur retourne


gzip -c -9 $fichier_sauv > $destination
valret=$?

# vrifier si la valeur retourne indique une erreur et dans ce cas,


# avertir l'utilisateur et quitter le script avec un code de sortie
# d'erreur
if [ $valret != 0 ]; then
echo "Une erreur s'est produite lors de la sauvegarde de $fichier_sauv"
exit $valret
fi

2. Boucle For
!/bin/bash
# Vrifier si les htes sont sur le rseau

# Ritrer sur tous les arguments de la ligne de commande


for hote in $*; do
ping -c2 $hote &> /dev/null
if [ $? = 0 ]; then
# Afficher les noms d'hte : 30 caractres et justifi gauche
printf "%-30s est sur le reseau\n" $hote
else
# Afficher les noms d'hte : 30 caractres et justifi gauche
printf "%-30s n'est PAS sur le reseau\n" $hote
fi
done

3/3
Clients Rseau de Base

Section 12 Exercices
Clients Rseau de Base
Dure Estime : 30 Minutes

Objectif : S'exercer en utilisant divers outils pour transfrer des fichiers entre
votre systme et un systme distance.

Configuration de Dpart : Un systme Linux install et fonctionnel.

Prerequis : une machine tudiante configure en serveur FTP comme le dpt


de donnes.

Squence 1 : Transfrer des fichiers avec lftp.

Scnario :
Un systme agit comme le dpt de donnes provenant d'autres ordinateurs. Les ordinateurs restants stockeront leurs
donnes sur le dpt de donnes et synchroniseront leurs propres donnes avec celles du dpt.

Tches :

1. Le systme d'un tudiant agit comme le dpt de donnes. L'tudiant dont le systme effectue cette tche devrait
s'assurer que le compte etudiant sur ce systme a le mot de passe etudiant et possde un rpertoire nomm
data. Pour le reste de cet exercice, ce systme sera appel stationX.

2. Les autres tudiants devraient vrifier leur connectivit rseau avec stationX, l'aide de la commande ping :

$ ping -c 3 stationX
PING stationX.example.com (192.168.0.X) from 192.168.0.2 : 56(84) bytes of data.
64 bytes from stationX.example.com (192.168.0.X): icmp_seq=0 ttl=255 time=214 usec
64 bytes from stationX.example.com (192.168.0.X): icmp_seq=1 ttl=255 time=212 usec
64 bytes from stationX.example.com (192.168.0.X): icmp_seq=2 ttl=255 time=218 usec
--- stationX.example.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/mdev = 0.212/0.214/0.218/0.017 ms

3. Utilisez lftp pour vous connecter de faon anonyme sur server1 et obtenir un fichier :
$ cd
$ lftp server1
lftp server1:~> cd pub
lftp server1:/pub> ls
-rw-r--r-- 1 0 0 26 Jun 13 23:57 getme
lftp server1:/pub> get getme
26 bytes transferred in 2 seconds (13b/s)
lftp server1:/pub> exit

4. Examinez, puis modifiez le fichier texte que vous avez rcupr :

$ cat getme
{Votre nom} tait ici !

Entrez votre nom l'endroit indiqu, puis enregistrez le fichier en tant que getme.XY o XY = vos initiales.

1/4
Clients Rseau de Base

S cat getme.jd
Jean Douba tait ici !

5. Utilisez lftp pour vous connecter sur le systme dpt, stationX, en tant que l'utilisateur etudiant, avec le
mot de passe etudiant, et transfrez votre fichier modifi dans le rpertoire ~/data de l'utilisateur :

$ lftp -u etudiant stationX


Password: entrez_le_mot_de_passe_ici
lftp etudiant@stationX:~> cd data
lftp etudiant@stationX:/> put getme.jd
21 bytes transferred.
lftp etudiant@stationX:/> exit

Rsultats :
Un fichier texte modifi / renomm, transfr dans le rpertoire ~etudiant/data sur le systme dpt.

2/4
Clients Rseau de Base

Squence 2 : Communication crypte suite ssh

Scnario :
Dans cette squence, vous allez utiliser la suite ssh d'utilitaires pour transfrer de manire scurise un fichier entre
votre machine et le dpt de donnes. Vous tablirez ensuite une session de connexion crypte avec l'hte distance et
vrifierez que votre fichier a bien t transfr.

Tches :

1. Commencez par effectuer une copie de votre fichier getme.XY utilis dans la dernire squence (n'oubliez pas de
remplacer les initiales ci-dessous avec les vtres) :

$ cd
$ cp getme.jd getme.jd.secure

2. Transfrez votre nouveau fichier via une session crypte vers le rpertoire data de l'utilisateur etudiant sur le
systme dpt :

$ scp getme.jd.secure etudiant@stationX:data/


The authenticity of host 'stationX.example.com' can't be established.
DSA key fingerprint is 6f:10:ec:42:cd:bc:1b:cc:16:d2:8d:ef:5b:49:20:1c.
Are you sure you want to continue connecting (yes/no)? Yes
Warning: Permanently added 'stationX.example.com,192.168.0.X' (DSA) to the list of
known hosts.
etudiant@stationX.example.com's password: entrez_le_mot_de_passe_ici
getme.jd.secure 100% |*******************************************************|
21 00:00

3. tablissez une session crypte vers le systme dpt et vrifiez que votre fichier a bien t transfr :

$ ssh etudiant@stationX
etudiant@stationX.example.com's password:
[etudiant@stationX etudiant]$ ls data/*jd*
getme.jd getme.jd.secure
[etudiant@stationX etudiant]$ exit

Rsultats :
Un fichier texte renomm supplmentaire, transfr de faon scurise sur le rpertoire ~/data du systme dpt.

3/4
Clients Rseau de Base

Squence 3 : Synchroniser vos fichiers avec un systme distant

Scnario :
Dans cette squence, vous allez utiliser la commande rsync pour effectuer une synchronisation de plusieurs fichiers
sur le systme dpt.

Tches :

1. Effectuez une opration de synchronisation sur le rpertoire ~/etudiant de l'hte distance, transfrant les fichiers
nouveaux et modifis de votre systme local.

$ cd
$ rsync -rsh=ssh etudiant@stationX:data/get* .
etudiant@stationX's password:
$ ls getme*
getme.af getme.ai getme.bg getme.cf
getme.af.secure getme.ai.secure getme.bg.secure getme.cf.secure
getme.ag getme.bc getme.bh getme.cg
getme.ag.secure getme.bc.secure getme.bh.secure getme.cg.secure
... sortie tronque ...

Rsultats :
Une synchronisation entre le rpertoire data de l'tudiant sur le systme dpt et votre rpertoire personnel local.

4/4
RPM , Kickstart, Paramtrage rseau statique

Section 13 Exercices
RPM, Kickstart, Paramtres de Rseau
Statique

Dure Estime : >60 Minutes

Objectif : Installer Linux (Red Hat, Fedora, Mandrake) avec Kickstart

Squence 1 : manipuler les RPM

Prparation: monter le rpertoire NFS de server1 dans votre systme de fichier, en root:
mkdir /mnt/nfs; mount server1:/var/ftp/pub /mnt/nfs

Tches :

1. Utilisez les requtes RPM pour dterminer les rponses aux questions suivantes :

a. Quels sont les fichiers dans le paquetage initscripts ?


b. Sur quel hte a t construit le RPM bash et quelle est sa taille une fois install ?
c. Est-ce-que le paquetage pam a chang depuis son installation ?
d. Quels paquetages installs ont-ils gnome dans leurs noms ?
e. Quel RPM fournit /etc/inittab ?
f. Quel RPM fournit /etc/fstab ? Pourquoi ?
g. Quelle tait la dernire entre changelog dans votre noyau ?
h. Quelles sont les diffrences entre les commandes suivantes ?
rpm -ivh <fichier de paquetage>
rpm -Uvh <fichier de paquetage>
rpm -F <fichier de paquetage>

2. Vrifiez la signature et l'intgrit d'un fichier de paquetage RPM de votre choix partir de server1.

Utilisez rpm --import pour ajouter la cl GPG de Red Hat au porte-cls sur tout le systme :

gpg --import /usr/share/rhn/RPM-GPG-KEY


rpm --import /usr/share/rhn/RPM-GPG-KEY

La commande rpm suivante testera si le paquetage a t sign par la cl prive associe avec la cl
publique que vous avez ajout votre porte-cls et si la somme de contrle MD5 du paquetage est reste
inchange depuis la cration du paquetage.

rpm -K <fichier de paquetage RPM>

3. Mise jour de RPMs


Mettez jour les rpms placs sur server1 dans /var/ftp/pub/Updates. Attention la mise jour du
package kernel !

1/7
RPM , Kickstart, Paramtrage rseau statique

2/7
RPM , Kickstart, Paramtrage rseau statique

Squence 2 : Rsolution automatique des dpendances

Scnario :

Avant de commencer cet exercice, assurez que les paquetages suivants ne sont pas installs (si ncessaire
dsinstallez les):
rpmdb-redhat
xsane
sane-backends
Les paquetages installer sont disponibles, par NFS depuis
server1.example.com:/var/ftp/pub qui peut tre mont sur le systme local. Les paquetages
utiliser sont dans ce partage sous RedHat/RPMS.

Tches :

1. Examinez un cas sans rsolution de dpendance. Pour vraiment apprcier les avantages de la rsolution
automatique des dpendances, essayez tout d'abord de charger un paquetage normalement. Essayez
d'installer le paquetage xsane depuis /mnt/nfs/RedHat/RPMS.
Cela devrait chouer et donner un message comme ceci :
error: Failed dependencies:
libsane.so.1 is needed by xsane-0.89-3
libusb-0.1.so.4 is needed by xsane-0.89-3

N'essayez pas de finir l'installation avec cette mthode.

2. Utiliser rpmdb-redhat. Installez le paquetage rpmdb-redhat, puis essayez de nouveau


l'installation du paquetage xsane. Cela devrait chouer de nouveau, mais donner plus d'informations
utiles comme :
Suggested resolutions:
libusb-0.1.6-3.i386.rpm
sane-backends-1.0.9-5.i386.rpm

3. Assurez que votre rpertoire courant soit /mnt/nfs/RedHat/RPMS. Essayez de nouveau d'installer le
paquetage xsane l'aide de l'option aid :
rpm -ivh --aid xsane-0.*.rpm

Vous devriez voir que le paquetage sane-backends est install automatiquement pour satisfaire les
dpendances.

3/7
RPM , Kickstart, Paramtrage rseau statique

Squence 3 : GRUB

Tches :

Utiliser GRUB au dmarrage pour activer Linux sous divers niveaux d'excution.

1. Redmarrez Linux afin que GRUB apparaisse sur votre cran. Vous remarquerez que le chronomtre
est en train de dcrmenter dans la partie basse de l'affichage GRUB.

2. Avant que le chronomtre n'atteigne zro, appuyez sur n'importe quelle flche de direction pour
l'arrter.

3. Prenez note du texte d'aide au bas de l'affichage GRUB. Utilisez les flches haut et bas pour naviguer
jusqu'au noyau que vous souhaitez redmarrer. Appuyez ensuite sur la touche e pour modifier le
contenu de grub.conf pour ce noyau.

4. Encore une fois, prenez note du texte d'aide au bas de l'affichage GRUB. Utilisez les flches haut et
bas pour naviguer jusqu' la ligne commenant avec le texte kernel et appuyez sur la touche e .

5. Vous tes maintenant en mode d'dition de GRUB avec le curseur la fin de la ligne. Appuyez sur la
barre d'espace puis sur la touche s . Appuyez ensuite sur la touche Entre . Vous remarquerez
que l'affichage GRUB revient l'cran prcdent et a maintenant le nouveau texte s ajout sur la
ligne du noyau. Si vous souhaitez annuler tous les changements que vous apportez dans GRUB,
appuyez simplement sur la touche <chap> pour retourner sur l'cran prcdent.

6. Appuyez sur la touche b pour dmarrer l'aide des options grub.conf. Dans cet exemple, vous
entrerez en niveau d'excution S ou simple utilisateur.

7. Aprs le redmarrage, vrifiez le contenu du fichier grub.conf. Vous remarquerez que la


modification que vous avez apporte aux crans GRUB n'a pas mis jour ce fichier.

8. Rptez les tapes 1 6 ci-dessus, en essayant diffrents niveaux d'excution, comme 5 .

4/7
RPM , Kickstart, Paramtrage rseau statique

Squence 4 : Paramtrage rseau statique

Scnario :
Le serveur DHCP sur votre rseau ne rpond plus. (Faites moi penser le dsactiver). Vous devez dfinir
une adresse IP statique afin de remettre votre poste de travail sur le rseau.

Tches :

1. Commencez par dsactiver votre interface ethernet avec la commande ifdown :

ifdown eth0

2. Ouvrez /etc/sysconfig/network-scripts/ifcfg-eth0 dans un diteur de texte et


changez le contenu pour qu'il corresponde l'exemple suivant (o X est remplac par votre numro de
poste) :

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.0.X
NETMASK=255.255.255.0
GATEWAY=192.168.0.254

3. Affichez le contenu de /etc/resolv.conf. Il devrait toujours avoir les paramtres valides obtenus
depuis le serveur DHCP. Si ce n'est pas le cas, assurez vous qu'il corresponde :

search example.com
nameserver 192.168.0.254

4. Activez votre interface nouvellement configure avec ifup :

ifup eth0

5. Vrifiez vos paramtres rseau en utilisant la commande ping server1.

6. Redmarrez la machine et, encore une fois, vrifiez vos paramtres de rseau en utilisant la commande
ping server1.

Rsultats :
Un systme configur pour fonctionner avec des paramtres de rseau statique.

Mnage :
Une fois le serveur DHCP relanc, remettez vos fichiers de configuration dans leur tat original et
dsactivez puis re-activez eth0. Le fichier ifcfg-eth0 devrait de nouveau lire :

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

5/7
RPM , Kickstart, Paramtrage rseau statique
9.
Squence 5 : Installation Kickstart
Tches :
Avant de commencer, veuillez lire les suggestions de rsolution de problmes la fin de la squence.

1. Rcuprer le fichier ks.cfg sur server1: lftpget ftp://server1/pub/ks.cfg

2. ditez le fichier ks.cfg

Vrifier la syntaxe du fichier.

Ajoutez la ligne suivante en-dessous de la directive %post en une seule ligne :


echo "UFR SCIENCES - Licence Professionnelle - stationX" >/etc/issue (o X est votre
numro de poste)

3. Enregistrez le fichier. Montez une disquette et copiez votre fichier ks.cfg sur la disquette :
mount /mnt/floppy; cp ks.cfg /mnt/floppy; umount /mnt/floppy

4. Redmarrez votre systme l'aide du CD fourni et placez votre disquette dans le lecteur de disquettes.

5. Lorsque le systme dmarre, tapez linux ks=floppy l'invite boot:. Si quelque chose est
incorrect sur la disquette kickstart, l'installateur affichera un message vous permettant de corriger les
erreurs.

6/7
RPM , Kickstart, Paramtrage rseau statique

Suggestions de rsolution de problmes Kickstart:

Si un cran de l'installeur apparat, c'est qu'il vous manque srement une ligne dans ks.cfg.

Si Disk Druid apparat, vous avez srement mal spcifi vos partitions. Assurez vous qu'il y ait assez de
place pour votre schma de partitionnement et que vous avez inclus une partition swap.

L'interprte Python rgurgitera des horreurs partout si une erreur fatale se produit. Examinez ce dsordre
avec attention vous pouvez utiliser les combinaisons de touches <Shift><Page Prcdente> et
<Shift><Page Suivante> pour faire dfiler l'cran. Cet examen rvlera gnralement o se trouve
l'erreur, mme si vous n'tes pas un pro en Python.

Si un problme existe ailleurs que dans la section %post, il apparatra srement avant que votre systme
ne soit cras. Par consquent, vous pouvez redmarrer votre systme pour examiner et corriger votre
fichier ks.cfg. Le fait de redmarrer en mode utilisateur simple l'aide de linux 1 devrait acclrer
les choses.

7/7