Vous êtes sur la page 1sur 3

WWW.RESEAUMAROC.

COM
Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux.
Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964

TP1 Scripts BASH

I. Scripts a: et c:

Pour les nostalgiques du dos, il s'agit de taper a: en ligne de commande et d'obtenir


le contenu du répertoire principal de la disquette. Taper c: pour démonter la
disquette et obtenir la liste de /

II. Vérifier si un utilisateur est connecté


III. Lire et traiter un fichier texte
a. Prérequis : while, les paramètres positionnels, set --
Conseil : utiliser la construction :
b. cat < users.txt | while true
c. do
d. read ligne
e. if [ "$ligne" = "" ]; then break; fi
f. ...
done

g. Créer un fichier texte users.txt contenant quelques lignes au format


suivant login mot-de-passe nom groupes-secondaires
Par exemple : toto moiletoto M.Toto profs,reseau (pas d'espace dans les
champs)
h. Ecrire le script essai-comptes.sh qui parcourt ce fichier ligne par ligne,
récupère les champs de chaque ligne dans les paramètres positionnels, et les
affiche.
i. Cet exercice sera poursuivi pour créer un script capable de générer des
comptes à partir d'un fichier.
IV. Comptes créés
o Obtenir la liste de tous les utilisateurs (nom , uid, gid, répertoire personnel)
possédant un compte créé sur le serveur, autrement dit ayant un uid
supérieur à 500 (uid se trouve au 3ème champ de /etc/passwd)
o Se servir des méthodes vues dans l'exercice précédent avec les conseils
suivants
1. Extraire les champs 1,3 et 4 du fichier /etc/passwd avec la commande
cat /etc/passwd | cut -d: -f 1,3,4
2. envoyer les lignes précédents vers l'entrée de la commande tr, de
façon à remplacer le séparateur ; par des espaces cat
/etc/passwd | cut -d: -f 1,3,4 | tr ":" " "
WWW.RESEAUMAROC.COM
Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux.
Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964

3. puis on envoie la sortie dans une boucle while qui permet d'en
extraire chaque ligne, dont on affectera chaque champ aux
paramètres positionnels grâce à set --
4. Il suffira alors de comparer la valeur uid à 500 et d'afficher si uid >=
500
V. Tester un fichier
o Il s'agit de créer le script test-fichier, qui précidera le type du fichier passé en
paramètre, ses permissions d'accès pour l'utilisateur
o Prérequis : passage de paramètres, instructions : test et if .. then .. else
o Appel : ./test-fichier nomFichier
o Exemple de résultats attendus
o Le fichier /etc est un répertoire
o "/etc" est accessible par root en lecture écriture
exécution
o
o Le fichier /etc/smb.conf est un fichier ordinaire
qui n'est pas vide
o "/etc/smb.conf" est accessible par jean en lecture.
VI. Afficher le contenu d'un répertoire
o Prérequis : passage de paramètres, instructions : for in
o Appel : ./test-fichier nomFichier
o Exemple de résultats attendus
o Prolongement difficile
Ecrire un script récursif capable d'afficher la liste des fichiers de
l'arborescence dont la tête est passée en argument
VII. Envoyer un mail à un ensemble d'utilisateurs

Avec l'utilitaire mail, il s'agit d'envoyer un même message à un ensemble


d'utilisateurs. On pourra écrire plusieurs versions :

. Le message est envoyé à tous les utilisateurs dont la liste est passée en
argument au moment de l'appel (message1)
Indication : récupérer la liste des arguments dans la variable spéciale $@
a. Le message est envoyé à tous les utilisateurs actuellement connectés
(message2)
Indication
Dans la boucle for .. in liste, on obtiendra liste avec une
substitution de commandes, utilisant who
Amélioration
A la fin du script, tester si l'envoi s'est bien déroulé sans erreur en
interrogeant le code de retour de mail. Si c'est le cas, ajouter à la fin du
fichier utilisateurs.send : la date, et la liste des correspondants.
WWW.RESEAUMAROC.COM
Cours/formation /Video en informatique: Linux,Cisco,2003 Server,securité,Réseaux.
Contact : tssri-reseaux@hotmail.fr TEL : 00212669324964

b. Le message est envoyé à tous les utilisateurs dont le nom commence par un
nom générique, passé en argument au moment de l'appel (message3)
Indication
On commencera par vérifier l'existence d'au moins un compte
l'appel message stage doit envoyer le message à tous les utilisateurs,
dont le nom commence par stage (comme stage1 ..)
c. Reprendre message1 avec le texte du message déjà enregistré dans le fichier
message.txt
appel : message message.txt liste