45
Navigation dans le Système de Fichiers en Ligne de Commande Section 2 – Exercices Navigation dans le Système de Fichiers en Ligne de Commande Durée Estimée : 30 Minutes Objectif : Devenir familier avec les fonctions, la syntaxe et l'utilisation de plusieurs commandes essentielles de manipulation de fichiers et de répertoires. Configuration de Départ : Un système Fedora Core Linux installé et fonctionnant, avec un compte d'utilisateur sans privilège appelé etudiant avec le mot de passe etudiant. Séquence 1 : Organisation de répertoires et de fichiers Scénario : Des fichiers se sont accumulés dans votre répertoire personnel. Vous avez décidé qu'il est temps de tout organiser. Vous prévoyez de créer plusieurs sous-répertoires et de copier et déplacer vos fichiers selon votre organisation. Vous possédez également plusieurs fichiers inutiles qui doivent être supprimés. Tâches : 1. Connectez-vous sur tty1 en tant que l'utilisateur etudiant avec le mot de passe etudiant. 2. Dès que vous êtes connecté sur le système, vous devriez être dans votre répertoire personnel. Utilisez la commande « print working directory » (afficher le répertoire de travail) pour vous en assurer. $ pwd /home/etudiant 3. Vérifiez que vous possédez des fichiers dans votre répertoire personnel en utilisant chacune des commandes suivantes : $ ls $ ls -a $ ls -al Pourquoi la première et la deuxième commande donnent-elles un nombre de fichiers différents? Quelle est la taille du plus grand fichier et du plus grand répertoire contenus dans votre répertoire personnel, d'après la troisième commande ? 4. Vous allez maintenant utiliser la commande touch pour créer les fichiers nécessaires pour cette séquence. Les détails sur le fonctionnement de l'extension de la commande suivante seront donnés 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 résultats de la dernière commande. Vous devriez trouver six nouveaux fichiers vides créés dans votre répertoire personnel. 1/3

Section 2 – Exercices Navigation dans le Système de ...perso-laris.univ-angers.fr/~delanoue/lprt/adminlinux/all_labo.pdf · Navigation dans le Système de Fichiers en Ligne de

Embed Size (px)

Citation preview

Navigation dans le Système de Fichiers en Ligne de Commande

Section 2 – ExercicesNavigation dans le Système de Fichiers en Ligne de Commande

Durée Estimée : 30 MinutesObjectif : Devenir familier avec les fonctions, la syntaxe et l'utilisation de

plusieurs commandes essentielles de manipulation de fichiers et de répertoires.

Configuration de Départ : Un système Fedora Core Linux installé et fonctionnant, avec un compte d'utilisateur sans privilège appelé etudiant avec le mot de passe etudiant.

Séquence 1 : Organisation de répertoires et de fichiers

Scénario :Des fichiers se sont accumulés dans votre répertoire personnel. Vous avez décidé qu'il est temps de tout organiser. Vous prévoyez de créer plusieurs sous-répertoires et de copier et déplacer vos fichiers selon votre organisation. Vous possédez également plusieurs fichiers inutiles qui doivent être supprimés.

Tâches :

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

2. Dès que vous êtes connecté sur le système, vous devriez être dans votre répertoire personnel. Utilisez la commande « print working directory » (afficher le répertoire de travail) pour vous en assurer.

$ pwd/home/etudiant

3. Vérifiez que vous possédez des fichiers dans votre répertoire personnel en utilisant chacune des commandes suivantes :

$ ls$ ls -a$ ls -al

Pourquoi la première et la deuxième commande donnent-elles un nombre de fichiers différents?

Quelle est la taille du plus grand fichier et du plus grand répertoire contenus dans votre répertoire personnel, d'après la troisième commande ?

4. Vous allez maintenant utiliser la commande touch pour créer les fichiers nécessaires pour cette séquence. Les détails sur le fonctionnement de l'extension de la commande suivante seront donnés 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 résultats de la dernière commande. Vous devriez trouver six nouveaux fichiers vides créés dans votre répertoire personnel.

1/3

Navigation dans le Système de Fichiers en Ligne de Commande

$ lsgraph_fev graph_jan graph_mar rapport_fev rapport_jan rapport_mar

Ces fichiers représentent les fichiers de données que vous allez utiliser dans le reste de cette séquence. 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 créer de nouveaux répertoires. Utilisez mkdir pour créer plusieurs répertoires. Lorsque vous changez de répertoires, ci-dessous, assurez-vous de vérifier que votre répertoire de travail est bien comme vous l'espériez.

$ 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 -ltotal 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_mardrwxrwsr-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 ProjetsCopies graphs rapports

7. Commencez par déplacer tous les fichiers « graph » dans le sous-répertoire graphs du répertoire Projets. Pour ce faire, suivez deux étapes : dans la première étape, déplacez un fichier ; dans la deuxième étape, déplacez 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, déplacez deux des fichiers « rapport » dans le sous-répertoire rapports du répertoire Projets. Déplacez les fichiers en une commande :

$ mv rapport_jan rapport_fev Projets/rapports$ ls -l Projets/rapports

2/3

Navigation dans le Système 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$ lsProjets

10.Passez dans le répertoire Copies et copiez les fichiers Janvier dans ce répertoire. 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 -ltotal 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 répertoire de travail courant.

Résultats :Un répertoire personnel plus organisé avec des fichiers placés dans les sous-répertoires appropriés.

3/3

Navigation dans le Système de Fichiers à l'aide de GNOME

Section 3 – ExercicesNavigation dans le Système de Fichiers à l'aide de GNOME

Durée Estimée : 20 MinutesObjectif : Devenir familier avec la navigation dans le système de fichiers à

l'aide de GNOME

Configuration de Départ : Un système Fedora Core Linux installé et fonctionnant, exécutant le système X Window avec un compte utilisateur sans privilèges appelé etudiant avec le mot de passe etudiant.

Séquence 1 : Utilisation de nautilus

Tâches :

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

2. Lancez nautilus

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

/etc

4. Faites défiler les répertoires pour trouver le fichier passwd. Double-cliquez sur ce fichier. Remarquez que le fichier /etc/passwd est affiché dans votre fenêtre. Sélectionnez le bouton Précédent pour revenir à la liste.

5. Vous pouvez changer la taille des icônes et des polices dans nautilus en sélectionnant les boutons – et + à droite du champ Emplacement. Sélectionnez-les, choisissez la taille de votre choix.

6. À droite de ces boutons se trouve le bouton Voir en tant qu'icônes. Sélectionnez-le et notez vos choix. Sélectionnez Voir en tant que liste du menu déroulant. Vous verrez que les données dans la partie principale de la fenêtre ressemble à une longue liste. Utilisez de nouveau les boutons – et + pour sélectionner une taille raisonnable.

7. Passez dans votre répertoire personnel en sélectionnant le bouton Rép perso.

8. Démarrez un terminal gnome-terminal en appuyant sur le bouton droit de la souris sur la fenêtre d'arrière-plan et en sélectionnant Nouveau terminal. Dans ce terminal, créez un nouveau fichier :

touch nouveaufichier

Remarquez que le fichier apparaît pratiquement immédiatement dans nautilus.

9. Cliquez avec le bouton droit de la souris sur l'icône NouveauFichier. Sélectionnez Déplacer dans la corbeille. Affichez le contenu de votre répertoire dans le terminal gnome-terminal et notez que le fichier n'est plus là.

10. Double-cliquez sur l'icône Corbeille du bureau. Notez que le fichier nouveaufichier est maintenant dans la corbeille. Sélectionnez le fichier dans la corbeille et faites-le glisser dans la fenêtre nautilus affichant la fenêtre /home/etudiant.

11. Sélectionnez la fenêtre gnome-terminal et confirmez que nouveaufichier est bien dans votre répertoire personnel.

1/2

Navigation dans le Système de Fichiers à l'aide de GNOME

Supprimez le fichier :

rm nouveaufichier

Notez que le fichier disparaît de la fenêtre nautilus, mais n'apparaît pas dans la corbeille.

12. Fermez les fenêtres nautilus et Corbeille. Déconnectez-vous du système X Window.

2/2

Le Shell bash

Section 4 – ExercicesLe Shell bash

Durée Estimée : 45 MinutesObjectif : Devenir familier avec les fonctions, la syntaxe et l'utilisation de

plusieurs commandes essentielles de manipulation de fichiers et de répertoires. Combiner ces commandes de manière utile pour accomplir des tâches utilisateur communes.

Configuration de Départ : Un système Linux installé et fonctionnant, avec un compte utilisateur sans privilèges appelé etudiant avec le mot de passe etudiant.

Séquence 1 : Organisation des répertoires et des fichiers

Scénario :Encore une fois, des fichiers se sont accumulés dans votre répertoire personnel. Vous avez décidé qu'il est temps de tout réorganiser. Vous prévoyez de créer plusieurs sous-répertoires et de copier et déplacer vos fichiers selon votre organisation. Vous possédez également plusieurs fichiers inutiles qui doivent être supprimés.

Tâches :

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

2. Dès que vous êtes connecté sur le système, vous devriez être dans votre répertoire personnel. Utilisez la commande « print working directory » (afficher le répertoire de travail) pour vous en assurer.

$ pwd/home/etudiant

3. Vous allez maintenant utiliser la commande touch pour créer les fichiers nécessaires pour cette séquence. Les détails sur le fonctionnement de l'extension de la commande suivante seront donnés 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 vérifier votre commande avant d'appuyer sur la touche Entrée.

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

4. Utilisez la commande ls pour examiner les résultats de la dernière commande. Vous devriez trouver que 108 nouveaux fichiers vides ont été créés dans votre répertoire personnel (vous n'avez pas besoin de compter ;-) ). Ces fichiers représentent les fichiers de données que vous allez utiliser dans le reste de cette séquence. 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 créer de nouveaux répertoires. Utilisez mkdir pour créer des sous-répertoires directement dans votre répertoire personnel :

$ mkdir a_rapports$ mkdir septembre octobre novembre decembre

De nouveau, utilisez ls pour examiner votre travail.

1/4

Le Shell bash

6. Créez des sous-répertoires supplémentaires dans l'un de vos nouveaux répertoires à l'aide des commandes suivantes :

$ cd a_rapportspour changer de répertoire. Puis :

$ mkdir un deux trois

Utilisez ls pour vérifier que vous avez trois nouveaux répertoires appelés un, deux et trois dans le sous-répertoire a_rapports.

7. Commencez par déplacer tous les rapports « b » hors de votre répertoire personnel et groupez les par mois. Lorsque vous travaillez avec des caractères génériques compliqués, il est toujours bon de pré-vérifier les opérations pour s'assurer que vous manipulez les bons fichiers. Pour cela, vous pouvez remplacer votre commande avec une commande inoffensive qui utilise les caractères génériques désirés. $ cd$ ls -l *dec_b_?

Vous devriez voir affiché les 9 fichiers « decembre », « b ». Déplacez l'un d'entre eux dans le répertoire decembre :

$ mv graph_dec_b_1 decembre

Maintenant, déplacez tous les autres avec :

$ mv *dec_b_? decembre

Affichez le contenu du sous-répertoire decembre pour vérifier que l'opération de déplacement a bien fonctionné :

$ ls -l decembretotal 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. Déplacez tous les rapports « b » restants dans leur répertoire respectif :$ mv *nov_b_? novembre$ mv *oct_b_? octobre$ mv *sep_b_? septembre

9. Vous allez maintenant rassembler tous les rapports « a » dans leurs répertoires numérotés respectifs. Notez l'utilisation du symbole ~ comme raccourci pour votre répertoire personnel. La combinaison du caractère générique et du modèle spécifie tous les fichiers finissant en _a_1 dans votre répertoire personnel.

$ cd a_rapports$ mv ~/*_a_1 un/

Les fichiers « septembre » « a1 » sont vieux et inutiles. Utilisez echo pour être sûr que vous avez créé un modèle ne correspondant qu'à ces fichiers, puis supprimez les et vérifiez ensuite que les autres fichiers « a1 » ont été déplacés

2/4

Le Shell bash

correctement :

$ cd un$ echo *sep*$ rm *sep*$ lsgraph_dec_a_1 graph_oct_a_1 memo_nov_a_1 rapport_dec_a_1 rapport_oct_a_1graph_nov_a_1 memo_dec_a_1 memo_oct_a_1 rapport_nov_a_1

10. Déplacez les derniers rapports « a2 » et « a3 » dans leur répertoire respectif. Pour rendre la chose encore plus intéressante, nous allons les déplacer du répertoire courant, en utilisant les chemins absolus et relatifs. Tout d'abord, utilisez pwd pour identifier le répertoire courant :

$ pwd/home/etudiant/a_rapports/un

Vérifiez que le modèle fasse référence aux fichiers « a_2 » avec echo, puis déplacez les en utilisant le chemin absolu :

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

Même si votre répertoire courant est /home/etudiant/a_rapports/un, vous pouvez déplacer les fichiers de /home/etudiant/ vers /home/etudiant/a_rapports/deux car vous avez spécifié les chemins des fichiers – dans ce cas, les chemins absolus.

Maintenant, déplacez les fichiers « a_3 » en utilisant les chemins relatifs. Encore une fois, vérifiez tout d'abord que le modèle fasse référence aux bons fichiers.

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

11. Retournez dans votre répertoire personnel et utilisez ls pour vérifier que les seuls fichiers restants dans ce répertoire 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 répertoire :

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

De plus, tous les fichiers de rapport pour le mois de décembre devraient être sauvegardés dans le répertoire /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'? ncp: 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 répertoire personnel. L'examen de ces fichiers révèle que le caractère générique *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 répertoire personnel. Une fois de plus, nous utiliserons echo avant d'exécuter une commande destructive.

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

Résultats :Un répertoire personnel plus organisé avec des fichiers placés dans les sous-répertoires appropriés et certains fichiers sauvegardés dans /tmp/archive.

4/4

Permissions de Fichiers

Section 5 – ExercicesPermissions de Fichiers

Durée Estimée : 30 MinutesObjectif : Devenir familier avec les fonctions, la syntaxe et l'utilisation de

plusieurs commandes essentielles de modification de permissions de fichier. Combiner ces commandes de manières utiles pour

accomplir des tâches d'utilisateur communes.

Configuration de Départ : Un système Linux installé et fonctionnant avec un compte etudiant existant

Séquence 1 : Définition de permissions de fichier

Tâches :

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 régler les permissions sur r-xr—-r- ?

____________________________________________________________________________________________________________________________________________

3. Vous venez juste de télécharger un fichier exécutable de l'internet. Quelle étape devez-vous accomplir avant de pouvoir l'exécuter ? Donnez deux différentes façons d'effectuer cette étape.

1/3

Permissions de Fichiers

____________________________________________________________________________________________________________________________________________

2/3

Permissions de Fichiers

Réponses à la Séquence 1 :

1. Permissions de fichiers symboliques (seules les permissions sont affichées, 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 possibilités :

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

3. La commande doit être rendue exécutable. Les commandes suivantes peuvent être utilisées (il existe également d'autres commandes) :

chmod +x nomdecommandechmod 755 nomdecommande

3/3

Le Système de Fichiers Linux

Section 6 – ExercicesLe Système de Fichiers Linux

Durée Estimée : 1 HeureObjectif : Développer une meilleure connaissance des principes de base du

système de fichiers Linux.

Configuration de Départ : Un système Linux installé et fonctionnant.

Séquence 1 : Déterminer l'utilisation du disque

Scénario :Vous voulez connaître la quantité d'espace libre sur chaque système de fichiers de votre système. De plus, vous voulez obtenir une liste des répertoires qui occupent le plus de place sur votre système.

Tâches :

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

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

2. Notez que l'opération par défaut de la commande df est d'afficher ses informations en blocs. Essayez d'utiliser les options -h et -H pour afficher les résultats de manière plus lisible :

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

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

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

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

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

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

1/5

Le Système de Fichiers Linux

Séquence 2 : Utiliser find

Tâches :

Connectez vous en tant que etudiant.Formez et exécutez une commande find qui produit le résultat décrit 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 /chaîne.

Un certain nombre de messages « Permission denied » (permission refusée) s'afficheront lorsque find essaiera de traverser des répertoires auxquels vous n'avez pas d'accès de lecture – ne vous souciez pas de ces messages. Vous pouvez même supprimer ces messages d'erreur en ajoutant 2> /dev/null à votre commande find (plus à ce sujet dans la prochaine section).La première réponse est déjà 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 système.

______________________________________________________________________

4. Affichez une liste du genre « ls -l » de tous les fichiers de taille supérieure à un million de caractères dans /usr/bin.

______________________________________________________________________

5. Exécutez une commande file sur tous les fichiers dans /etc/mail.

____________________________________________________________________________________

6. Affichez une liste du genre « ls -l » de tous les fichiers « réguliers » 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 « réguliers » qui appartiennent à l'utilisateur etudiant dans /tmp et dont l'heure de modification est supérieure à il y a 120 minutes (astuce : man find).

____________________________________________________________________________________

8. Modifiez la commande ci-dessus pour supprimer tous les fichiers « réguliers » qui appartiennent à l'utilisateur etudiant dans /tmp dont l'heure de modification est supérieure à 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 Système de Fichiers Linux

Séquence 3 : Archivage et compression

Scénario :Le disque dur primaire de votre système commence à faire beaucoup de bruit à chaque fois que vous l'utilisez et vous soupçonnez qu'il est prêt à mourir et ainsi perdre vos données. Vu que la dernière sauvegarde du système date de deux ans et demi, vous décidez de sauvegarder manuellement quelqu'uns de vos fichiers les plus importants. Le répertoire /tmp est stocké dans une partition sur un disque dur différent. Vous allez donc y sauvegarder vos fichiers temporairement. (Cependant, vu que tmpwatch efface les fichiers dans /tmp qui n'ont été pas accédés de 10 jours, vous ne devriez pas y garder vos données importantes trop longtemps).

Tâches :

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 stockée 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. Décompressez 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 Système 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 système UNIX traditionnel, les étapes d'archivage avec tar et de compression d'archive s'effectuent séparément, tout comme vous l'avez fait dans les étapes précédentes. Sur un système Linux, avec la commande GNU tar, le fichier tar peut être filtré automatiquement par de nombreux programmes de compression durant la création du fichier. Essayez les étapes suivantes. Les commandes tar produiront quelques messages d'erreur car les utilisateurs sans privilèges n'ont pas d'accès 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: Unixtest2.tbz: bzip2 compressed data, block size = 900k

Résultats :Vos « données importantes » sont archivées, compressées et sauvegardées dans le répertoire /tmp.

4/5

Le Système de Fichiers Linux

Réponses à la Séquence 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/nullou 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

Entrée et Sortie Standards et Tubes

Section 7 – ExercicesEntrée et Sortie Standards et Tubes

Durée Estimée : 30 MinutesObjectif : Devenir familier avec les entrées et les sorties standard et les

tubes implémentés sur un système Linux.

Configuration de Départ : Un système Linux installé et fonctionnant

Séquence 1 : Entrée et Sortie Standard

Tâches :

1. Ouvrez votre éditeur de texte préféré et créez deux fichiers que nous utiliserons plus loin dans cet exercice.

paquetages1.txt devrait contenir les huit lignes suivantes :

amandagaleonmetacitymozillapostgresqlprocinforpmfindsquid

paquetages2.txt devrait contenir les six lignes suivantes :

anacondaopensshgnome-coresambasendmailxscreensaver

2. cat est le filtre de texte de Linux le plus simple. Son rôle est de prendre son entrée – depuis un fichier dont le nom est fourni en argument sur la ligne de commande ou depuis une entrée 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 entrée standard. Cela signifie que si vous tapez cat à l'invite shell et appuyez sur <Entrée>, rien ne se passera. En vérité, cat observe patiemment l'entrée standard, en attendant l'arrivée d'une entrée. Si vous tapez des caractères et appuyez sur <Entrée>, cat envoie l'entrée tapée à la sortie standard – répétant 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'entrée.

$ catSaisissez du texte, puis appuyez sur Entrée.^d

1/5

Entrée et Sortie Standards et Tubes

4. La plupart des commandes de traitement de texte Linux sont implémentées en tant que filtres – c'est à dire qu'elles peuvent lire l'entrée standard, y effectuer un traitement, puis l'envoyer à la sortie standard. Ces commandes se comportent exactement comme cat, mais leurs sorties sont différentes de leurs entrées.

tr, présenté dans la section, est l'un de ces filtres. Si vous lui donnez deux chaînes en arguments, tr lit l'entrée standard, transformant les lettres de la première chaîne en lettres de la deuxième chaîne, et écrit la chaîne traduite en sortie standard.

Répétez l'exemple précédent, en utilisant tr au lieu de cat. Donnez lui des arguments conçus à transformer toutes les voyelles de son entrée en majuscules.

$ tr 'aeiou' 'AEIOU'Saisissez du texte, puis appuyez sur Entrée.^d

5. Pour indiquer au shell que la sortie d'une commande ne devrait pas être envoyée à la sortie standard, mais qu'elle devrait être redirigée vers un fichier, redirigez la sortie standard avec le symbole >.

Répétez 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 créant une copie du fichier paquetages1.txt. Exécutez cat sur le fichier de sortie et vérifiez qu'il contienne le même 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 résultats.

$ cat paquetages2.txt >> paquetages1.fichiercat$ cat paquetages1.fichiercat

7. Si aucun nom de fichier n'est passé en argument à cat et que l'entrée standard est redirigée vers un fichier, tout ce qui est tapé jusqu’à ce que l'entrée soit terminée avec <Ctrl-d> sera redirigée vers le fichier. Cela permet de créer facilement un nouveau fichier texte.

$ cat > saisi.txtCette 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. Répétez l'étape précédente en substituant la commande cat par tr. $ tr 'aeiou' 'AEIOU' > fichiertr.txt

2/5

Entrée 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 réglage actuel de l'option bash noclobber (off). Vérifiez 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 vérifiez son fonctionnement :

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

11. cat accepte soit un nom de fichier, soit une entrée standard redirigée 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 entrée doit seulement venir d'une entrée standard.

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

13. La sortie et l'entrée standard peuvent être toutes deux redirigées, comme dans l'exemple suivant. Dirigez l'entrée de tr, comme au-dessus, du fichier paquetages1.txt, mais cette fois, redirigez la sortie standard. Aucune sortie n'est envoyée à l'écran – elle est à la place stockée 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

Entrée et Sortie Standards et Tubes

Séquence 2 : Exercices

Les réponses sont sur la page suivante si vous en avez besoin, mais essayez de compléter chaque exercice en utilisant les informations de cette section et les pages de système man.

1. Effectuez une copie de la page formatée man pour la commande cal dans votre répertoire maison, appelée cal.man.

2. Quelle(s) commande(s) d'une ligne produiriez-vous pour configurer vos flots d'entrée et de sortie de telle manière 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

Entrée et Sortie Standards et Tubes

Réponses à la séquence 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'entrée standard. L'entrée tapée au clavier sera imprimée après que vous ayez appuyé sur <ctrl-d>.

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

5/5

Introduction au Traitement de Chaînes

Section 8 – ExercicesIntroduction au Traitement de Chaînes

Durée Estimée : 20 Minutes

Objectif : Devenir familier avec plusieurs utilitaires de traitement de texte disponibles sur un système Linux.

Configuration de Départ : Un système Linux installé et fonctionnant, et une copie de /etc/passwd dans votre répertoire personnel.

Séquence 1 : Traitement de chaînes de base

Tâches :

1. Effectuez une copie de /etc/passwd dans votre répertoire personnel.

$ cd$ cp /etc/passwd .

2. Pour chaque compte sur le système, 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 système _____________________

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 très bien organisé. Triez les lignes de la sortie et mettez les données triées dans un nouveau fichier :

$ sort shells > shells.tries

5. Votre fichier contient de nombreuses occurrences de la même valeur. Utilisez uniq pour obtenir le nombre de fois chaque valeur apparaît :

$ 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 Chaînes

6. Pour produire une liste triée numériquement en ordre décroissant de tous les shells en utilisation sur la machine (bien-sûr, les nombres exacts sur votre machine peuvent être différents de ceux ci-dessous) :

$ sort -nr uniq.shells.tries30 /sbin/nologin 6 /bin/bash 1 /sbin/shutdown 1 /sbin/halt 1 /sbin/sync 1

Résultats :Une liste triée numériquement en ordre décroissant des shells assignés aux comptes d'utilisateur sur la machine.

Séquence 2 : Exercices supplémentaires sur le traitement de chaînes

Composez puis écrivez la solution pour chaque exercice. Souvenez vous que la réponse est la commande que vous composez et non pas sa sortie. Les réponses sont données à la fin de l'exercice, mais essayez de travailler tout seul sur chaque tâche avant de regarder les réponses. Chaque réponse doit être une seule ligne de commande et devrait implémenter au moins un tube. La commande aspell n'a pas de page man ; comment pouvez-vous obtenir de l'aide ?

Tâches :

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

______________________________________________________________________________________

2. Effectuez un contrôle d'orthographe du dictionnaire du système 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 Chaînes

Réponses à la séquence 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 Chaînes avec des Expressions Régulières

Section 9 – ExercicesTraitement de Chaînes avec des Expressions Régulières

Durée Estimée : 60 Minutes

Objectif : Devenir familier avec plusieurs utilitaires de traitement de texte disponibles sur un système Linux.

Configuration de Départ : Un système Linux installé et fonctionnant, et une copie de /etc/passwd dans votre répertoire personnel.

Séquence 1 : Traitement de chaînes avec grep

Tâches :1. Utilisez grep pour afficher la ligne pour tout compte qui commence avec la lettre « g » dans la copie de

/etc/passwd de votre répertoire personnel :

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

Dans cet exemple, comme dans les suivants, votre sortie peut être différente.

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

$ grep 'bash$' passwdroot:x:0:0:root:/root:/bin/bashetudiant:x:500:500::/home/etudiant:/bin/bashvisiteur:x:501:501::/home/visiteur:/bin/bash

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

$ grep -v 'bash$' passwdbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologin... sortie tronquée ...

4. Pour illustrer l'utilisation de diff, créez une copie modifiée 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 dernière 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 différences ne sont pas faciles à voir, même dans ce petit fichier. Imaginez si votre fichier passwd contenait des entrées pour des milliers d'utilisateurs ! Utilisez diff pour produire une liste des modifications entre les deux

1/6

Traitement de Chaînes avec des Expressions Régulières

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 différente.

2/6

Traitement de Chaînes avec des Expressions Régulières

Séquence 2 : Expressions régulières et traitement de chaînes

Composez, puis écrivez la solution pour chaque tâche ci-dessous. Souvenez vous que la réponse est la commande que vous composez et non pas sa sortie. Les réponses sont données à la fin de l'exercice, mais essayez de travailler tout seul sur chaque tâche avant de regarder les réponses.

Tâches :

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

$ grep fish /usr/share/dict/wordsblowfishbluefishcodfish... sortie tronquée ...unselfishunselfishlyunselfishness

2. En utilisant la page man de grep, construisez et testez une commande qui affichera chaque ligne contenant le modèle fish et les deux lignes précédant et succédant chaque ligne trouvée (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 modèle fish apparaît.

_______________________________________________________________________________________

4. En utilisant la page man de grep, construisez et testez une commande qui affichera une ligne pour chaque occurrence du modèle fish dans le fichier words, y compris le numéro 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. Créez une expression régulière 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 exécutez 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 Chaînes avec des Expressions Régulières

_______________________________________________________________________________________

9. Les sous-répertoires de /usr/share/doc sont de bonnes sources d'informations (sans parler des fichiers de texte clair). Nous allons utiliser des fichiers de ce répertoire pour les tâches suivantes.

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

_______________________________________________________________________________________

10. Affichez le nombre de fois que le modèle « Linux » apparaît dans les fichiers réguliers de /usr/share/doc/bash-2.05b, mais n'affichez pas le nombre de fichiers où le modèle n'apparaît pas. Astuce : affichez le nombre de tous les fichiers, examinez la sortie, puis pensez à une manière de supprimer de la sortie les lignes correspondant à un certain modèle.

_______________________________________________________________________________________

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

_______________________________________________________________________________________

4/6

Traitement de Chaînes avec des Expressions Régulières

Séquence 3 : Édition de texte avec les expressions régulières

Tâches :

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

catcatalogconcatenatepolecatCat

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/' catscat catalog concatenate polecat Cat

2. sed 's/[Cc]at/dog/' catscat catalog concatenate polecat Cat

3. sed 's/\<[Cc]at/dog/' catscat catalog concatenate polecat Cat

4. sed 's/[Cc]at\>/dog/' catscat catalog concatenate polecat Cat

5. sed 's/\<[Cc]at\>/dog/' catscat catalog concatenate polecat Cat

6. sed 's/\<[Cc]at\>/& and dog/' catscat catalog concatenate polecat Cat

7. Créez le fichier « cats ». Exécutez les commandes sed, ci-dessus, et testez vos réponses.

5/6

Traitement de Chaînes avec des Expressions Régulières

Réponses à la séquence 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 déterminer ce que les mots ont en commun et ce qui est différent. Notez que le nombre de caractères des mots est l'une des variables. La syntaxe .* est donc nécessaire.

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

Contrôle de Processus et scripts bash

Section 10-11 – ExercicesContrôle de Processus

Durée Estimée : 60 Minutes

Objectif : Utiliser les différentes commandes de contrôle de processus.

Configuration de Départ : Un système Linux installé et fonctionnant. Un compte d'utilisateur appelé etudiant avec le mot de

passe etudiant.

Séquence 1 : Contrôle de Processus

Scénario :Dans cette séquence, vous allez commencer l'exécution de plusieurs processus, puis utiliser les fonctions de contrôle de travail de bash pour les gérer et les contrôler. Vous changerez de consoles virtuelles. Faites attention à bien noter quelle console est utilisée pour chaque commande.

Tâches :

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 (exécuté en arrière-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 exécutez la commande suivante :

$ tail -f log

Vous devriez voir une séquence de caractères « 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é arrêté et vous donne un numéro de travail de [1]. Passez sur tty2 et vérifiez que le fichier n'est plus en train de grandir.

5. Passez sur tty1 et relancez le processus, cette fois en arrière-plan. Utilisez jobs pour montrer que le travail [1] est bien en cours d'exécution. Finalement, passez sur tty2 et vérifiez 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 première commande est presque identique à la commande que vous avez exécuté dans l'étape 2. Utilisez la flèche vers le haut pour rappeler cette commande, modifiez le « A » par un « B » et ajoutez le symbole & à la fin. La deuxième commande exécute simplement la commande précédente, en changeant le « B » par un « C ») :

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

7. Tapez jobs et vérifiez que les trois sont en cours. Passez sur tty2 et vérifiez que le fichier est toujours en train 1/3

Contrôle de Processus et scripts bash

de grandir, cette fois avec « A », « B » et « C » tous ajoutés à 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 numéros correspondants. Puis utilisez kill pour envoyer un signal SIGSTOP au travail [1] pour l'interrompre. Passez sur tty1 et exécutez les commandes suivantes :

$ kill -l$ kill -19 %1

9. Tapez jobs et vérifiez que le travail [1] indique stopped (arrêté). Passez sur tty2 et vérifiez que le travail [1] s'est bien arrêté.

10. Relancez le travail [1] en utilisant kill pour envoyer un signal SIGCONT (18) au processus. Utilisez la commande jobs et tty2 pour vérifier que les trois travaux sont toujours en exécution. (Astuce : référez vous à l'étape 8 pour la syntaxe.)

11. Utilisez kill sur les trois processus. Si vous ne spécifiez pas un signal à envoyer, kill enverra un signal SIGTERM (15) par défaut. Recevant un signal SIGTERM, la plupart des programmes s'arrêteront. Après avoir envoyé le signal aux travaux [2] et [3], utilisez jobs pour vérifier qu'ils indiquent tous terminated (terminé).

$ kill %2 %3$ jobs

12. Pour terminer le dernier processus :

$ fg$ <Ctrl-c>

13. Tapez jobs et vérifiez qu'aucun travail n'est affiché. Passez sur tty2 et vérifiez que toute activité ait cessé. Arrêtez la commande tail en appuyant sur <Ctrl-c> et déconnectez-vous de ce tty.

Passez sur tty1 et supprimez le fichier ~/log.

Séquence 2 : Scripts BASH

Tâches :

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 répertoire de destination), vérifier si la valeur retournée 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 vérifier 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 différentes dans cette fourchette) sont actifs au niveau réseau (avec ping -c2 machine, par exemple) en affichant « machine active »

2/3

Contrôle de Processus et scripts bash

Corrigé Séquence 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 retournée

gzip -c -9 $fichier_sauv > $destination

valret=$?

# vérifier si la valeur retournée 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

# Vérifier si les hôtes sont sur le réseau

# Réitérer 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'hôte : 30 caractères et justifié à gauche

printf "%-30s est sur le reseau\n" $hote

else

# Afficher les noms d'hôte : 30 caractères et justifié à gauche

printf "%-30s n'est PAS sur le reseau\n" $hote

fi

done

3/3

Clients Réseau de Base

Section 12 – ExercicesClients Réseau de Base

Durée Estimée : 30 Minutes

Objectif : S'exercer en utilisant divers outils pour transférer des fichiers entre votre système et un système à distance.

Configuration de Départ : Un système Linux installé et fonctionnel.

Prerequis : une machine étudiante configurée en serveur FTP comme le dépôt de données.

Séquence 1 : Transférer des fichiers avec lftp.

Scénario :Un système agit comme le dépôt de données provenant d'autres ordinateurs. Les ordinateurs restants stockeront leurs données sur le dépôt de données et synchroniseront leurs propres données avec celles du dépôt.

Tâches :

1. Le système d'un étudiant agit comme le dépôt de données. L'étudiant dont le système effectue cette tâche devrait s'assurer que le compte etudiant sur ce système a le mot de passe etudiant et possède un répertoire nommé data. Pour le reste de cet exercice, ce système sera appelé stationX.

2. Les autres étudiants devraient vérifier leur connectivité réseau avec stationX, à l'aide de la commande ping :

$ ping -c 3 stationXPING 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 usec64 bytes from stationX.example.com (192.168.0.X): icmp_seq=1 ttl=255 time=212 usec64 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 lossround-trip min/avg/max/mdev = 0.212/0.214/0.218/0.017 ms

3. Utilisez lftp pour vous connecter de façon anonyme sur server1 et obtenir un fichier :

$ cd$ lftp server1lftp server1:~> cd publftp server1:/pub> ls-rw-r--r-- 1 0 0 26 Jun 13 23:57 getmelftp server1:/pub> get getme26 bytes transferred in 2 seconds (13b/s)lftp server1:/pub> exit

4. Examinez, puis modifiez le fichier texte que vous avez récupéré :

$ 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 Réseau de Base

S cat getme.jdJean Douba était ici !

5. Utilisez lftp pour vous connecter sur le système dépôt, stationX, en tant que l'utilisateur etudiant, avec le mot de passe etudiant, et transférez votre fichier modifié dans le répertoire ~/data de l'utilisateur :

$ lftp -u etudiant stationXPassword: entrez_le_mot_de_passe_ici

lftp etudiant@stationX:~> cd datalftp etudiant@stationX:/> put getme.jd21 bytes transferred.

lftp etudiant@stationX:/> exit

Résultats :Un fichier texte modifié / renommé, transféré dans le répertoire ~etudiant/data sur le système dépôt.

2/4

Clients Réseau de Base

Séquence 2 : Communication cryptée – suite ssh

Scénario :Dans cette séquence, vous allez utiliser la suite ssh d'utilitaires pour transférer de manière sécurisée un fichier entre votre machine et le dépôt de données. Vous établirez ensuite une session de connexion cryptée avec l'hôte à distance et vérifierez que votre fichier a bien été transféré.

Tâches :

1. Commencez par effectuer une copie de votre fichier getme.XY utilisé dans la dernière séquence (n'oubliez pas de remplacer les initiales ci-dessous avec les vôtres) :

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

2. Transférez votre nouveau fichier via une session cryptée vers le répertoire data de l'utilisateur etudiant sur le système dépôt :

$ 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)? YesWarning: Permanently added 'stationX.example.com,192.168.0.X' (DSA) to the list of known [email protected]'s password: entrez_le_mot_de_passe_icigetme.jd.secure 100% |*******************************************************| 21 00:00

3. Établissez une session cryptée vers le système dépôt et vérifiez que votre fichier a bien été transféré :

$ ssh etudiant@[email protected]'s password:

[etudiant@stationX etudiant]$ ls data/*jd*getme.jd getme.jd.secure

[etudiant@stationX etudiant]$ exit

Résultats :Un fichier texte renommé supplémentaire, transféré de façon sécurisée sur le répertoire ~/data du système dépôt.

3/4

Clients Réseau de Base

Séquence 3 : Synchroniser vos fichiers avec un système distant

Scénario :Dans cette séquence, vous allez utiliser la commande rsync pour effectuer une synchronisation de plusieurs fichiers sur le système dépôt.

Tâches :

1. Effectuez une opération de synchronisation sur le répertoire ~/etudiant de l'hôte à distance, transférant les fichiers nouveaux et modifiés de votre système local.

$ cd$ rsync -–rsh=ssh etudiant@stationX:data/get* .etudiant@stationX's password:

$ ls getme*getme.af getme.ai getme.bg getme.cfgetme.af.secure getme.ai.secure getme.bg.secure getme.cf.securegetme.ag getme.bc getme.bh getme.cggetme.ag.secure getme.bc.secure getme.bh.secure getme.cg.secure... sortie tronquée ...

Résultats :Une synchronisation entre le répertoire data de l'étudiant sur le système dépôt et votre répertoire personnel local.

4/4

RPM , Kickstart, Paramétrage réseau statique

Section 13 – ExercicesRPM, Kickstart, Paramètres de Réseau Statique

Durée Estimée : >60 Minutes

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

Séquence 1 : manipuler les RPM

Préparation: monter le répertoire NFS de server1 dans votre système de fichier, en root: mkdir /mnt/nfs; mount server1:/var/ftp/pub /mnt/nfs

Tâches :

1. Utilisez les requêtes RPM pour déterminer les réponses aux questions suivantes :

a. Quels sont les fichiers dans le paquetage initscripts ?b. Sur quel hôte 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 installés ont-ils « gnome » dans leurs noms ?e. Quel RPM fournit /etc/inittab ?f. Quel RPM fournit /etc/fstab ? Pourquoi ?g. Quelle était la dernière entrée changelog dans votre noyau ?h. Quelles sont les différences entre les commandes suivantes ?

rpm -ivh <fichier de paquetage>rpm -Uvh <fichier de paquetage>rpm -F <fichier de paquetage>

2. Vérifiez la signature et l'intégrité 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-clés sur tout le système :

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

La commande rpm suivante testera si le paquetage a été signé par la clé privée associée avec la clé publique que vous avez ajouté à votre porte-clés et si la somme de contrôle MD5 du paquetage est restée inchangée depuis la création du paquetage.

rpm -K <fichier de paquetage RPM>

3. Mise à jour de RPMsMettez à jour les rpms placés sur server1 dans /var/ftp/pub/Updates. Attention à la mise à jour du package kernel !

1/7

RPM , Kickstart, Paramétrage réseau statique

2/7

RPM , Kickstart, Paramétrage réseau statique

Séquence 2 : Résolution automatique des dépendances

Scénario :

Avant de commencer cet exercice, assurez que les paquetages suivants ne sont pas installés (si nécessaire désinstallez les):

rpmdb-redhatxsanesane-backends

Les paquetages à installer sont disponibles, par NFS depuis server1.example.com:/var/ftp/pub qui peut être monté sur le système local. Les paquetages à utiliser sont dans ce partage sous RedHat/RPMS.

Tâches :

1. Examinez un cas sans résolution de dépendance. Pour vraiment apprécier les avantages de la résolution automatique des dépendances, 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-3libusb-0.1.so.4 is needed by xsane-0.89-3

N'essayez pas de finir l'installation avec cette méthode.

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.rpmsane-backends-1.0.9-5.i386.rpm

3. Assurez que votre répertoire 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 dépendances.

3/7

RPM , Kickstart, Paramétrage réseau statique

Séquence 3 : GRUB

Tâches :

Utiliser GRUB au démarrage pour activer Linux sous divers niveaux d'exécution.

1. Redémarrez Linux afin que GRUB apparaisse sur votre écran. Vous remarquerez que le chronomètre est en train de décrémenter dans la partie basse de l'affichage GRUB.

2. Avant que le chronomètre n'atteigne zéro, appuyez sur n'importe quelle flèche de direction pour l'arrêter.

3. Prenez note du texte d'aide au bas de l'affichage GRUB. Utilisez les flèches haut et bas pour naviguer jusqu'au noyau que vous souhaitez redémarrer. 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 flèches haut et bas pour naviguer jusqu'à la ligne commençant 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 « Entrée ». Vous remarquerez que l'affichage GRUB revient à l'écran précédent 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 précédent.

6. Appuyez sur la touche « b » pour démarrer à l'aide des options grub.conf. Dans cet exemple, vous entrerez en niveau d'exécution « S » ou simple utilisateur.

7. Après le redémarrage, vérifiez le contenu du fichier grub.conf. Vous remarquerez que la modification que vous avez apportée aux écrans GRUB n'a pas mis à jour ce fichier.

8. Répétez les étapes 1 à 6 ci-dessus, en essayant différents niveaux d'exécution, comme « 5 ».

4/7

RPM , Kickstart, Paramétrage réseau statique

Séquence 4 : Paramétrage réseau statique

Scénario :Le serveur DHCP sur votre réseau ne répond plus. (Faites moi penser à le désactiver). Vous devez définir une adresse IP statique afin de remettre votre poste de travail sur le réseau.

Tâches :

1. Commencez par désactiver 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 numéro de poste) :

DEVICE=eth0BOOTPROTO=noneONBOOT=yesIPADDR=192.168.0.XNETMASK=255.255.255.0GATEWAY=192.168.0.254

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

search example.comnameserver 192.168.0.254

4. Activez votre interface nouvellement configurée avec ifup :

ifup eth0

5. Vérifiez vos paramètres réseau en utilisant la commande ping server1.

6. Redémarrez la machine et, encore une fois, vérifiez vos paramètres de réseau en utilisant la commande ping server1.

Résultats : Un système configuré pour fonctionner avec des paramètres de réseau statique.

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

DEVICE=eth0BOOTPROTO=dhcpONBOOT=yes

5/7

RPM , Kickstart, Paramétrage réseau statique

9.Séquence 5 : Installation Kickstart

Tâches :Avant de commencer, veuillez lire les suggestions de résolution de problèmes à la fin de la séquence.

1. Récupérer le fichier ks.cfg sur server1: lftpget ftp://server1/pub/ks.cfg

2. Éditez le fichier ks.cfg

Vérifier 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 numéro 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. Redémarrez votre système à l'aide du CD fourni et placez votre disquette dans le lecteur de disquettes.

5. Lorsque le système démarre, 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, Paramétrage réseau statique

Suggestions de résolution de problèmes Kickstart:

Si un écran de l'installeur apparaît, c'est qu'il vous manque sûrement une ligne dans ks.cfg.

Si Disk Druid apparaît, vous avez sûrement mal spécifié vos partitions. Assurez vous qu'il y ait assez de place pour votre schéma de partitionnement et que vous avez inclus une partition swap.

L'interprète Python régurgitera des horreurs partout si une erreur fatale se produit. Examinez ce désordre avec attention – vous pouvez utiliser les combinaisons de touches <Shift><Page Précédente> et <Shift><Page Suivante> pour faire défiler l'écran. Cet examen révélera généralement où se trouve l'erreur, même si vous n'êtes pas un pro en Python.

Si un problème existe ailleurs que dans la section %post, il apparaîtra sûrement avant que votre système ne soit écrasé. Par conséquent, vous pouvez redémarrer votre système pour examiner et corriger votre fichier ks.cfg. Le fait de redémarrer en mode utilisateur simple à l'aide de linux 1 devrait accélérer les choses.

7/7