Vous êtes sur la page 1sur 2

Dpartement R&T IUT de Villetaneuse (06-07) Module R3

TP 7 Programmation shell L'objectif de ce TP est de montrer un exemple d'utilisation de plusieurs langages de programmation pour effectuer des tches d'administration systme. L'exemple trait ici est l'automatisation de la cration des comptes utilisateurs. L'exercice consiste dvelopper des programmes qui permettent de crer des comptes utilisateurs partir d'une liste de noms, prnoms. On considre la liste suivante sauvegarde dans un fichier list.txt : Le Terrible, Ivan Le Bref, Pepin Premier, Francois Kahn, Gengis Capet, Hugues Le Grand, Alexandre Afin de crer des comptes il faudra : - dfinir un identifiant de connexion (login) - crer un mot de passe - crer le compte correspondant Les login seront forms sur le modle etuXXX, o XXX est un numro, partir de 1. Ainsi les comptes seront : etu001, etu002, etc. Les mots de passe seront identiques aux login de compte, en ajoutant la premire lettre du prnom et du nom. Ainsi, si Ivan Le Terrible est le premier tudiant tre enregistr, son compte sera etu001 et son mot de passe sera etu001il. Pour mener bien la cration des tudiants, vous aurez besoin de combiner plusieurs outils : le shell, le langage awk, et le langage C. Vous matrisez dj des le shell et le C (!!). Awk (du nom des auteurs Aho, Weinberger et Kernighan) est un langage permettant de traiter des chanes de caractres. L'usage typique d'Awk est d'effectuer des oprations sur chaque ligne d'un fichier donn en paramtre. Les questions suivantes vont vous guider dans la mise en place d'une solution pour rsoudre le problme pos. Question 1 : Dans un premier temps, raliser un script bash principal.sh qui lit le fichier des tudiants. Pour cela, votre script appellera awk pour extraire le nom et le prnom chaque ligne du fichier et construire l'identifiant et le mot de passe. L'exemple suivant illustre l'utilisation d'awk pour parcourir un fichierliste.txtcompos d'un ensemble de lignes. Chaque ligne contient un couple nom, prnom spar par un virgule. cette

Dpartement R&T IUT de Villetaneuse (06-07) Module R3

commande affiche les login et les mots de passes choisir pour chaque utilisateur selon les consignes donnes ci-hait. awkF',''BEGIN{num=1}{printf"etu%03detu%03d%s%s",num, num,substr(tolower($2),1,1),substr(tolower($1),1,1);num+=1} ;'liste.txt La syntaxe d'awk est proche de celui du C. Tester cette commande et expliquer son fonctionnement. Question 2 : Les comptes seront crs automatiquement en appelant la commande useradd. Cette commande prend plusieurs paramtres: l'identifiant du nouvel utilisateur, son mot de passe crypt,..etc. crivez un script nvetud.sh qui prend les paramtres de la ligne de commande deux deux (l'identifiant et le mot de passe en clair) et excute la commande useradd. Le mot de passe tant en clair pour l'instant, les comptes crs ne sont pas accessibles. Vous aurez besoin de: - la variable $# qui indique le nombre de paramtres restant sur la ligne de commande - l'instruction shift qui permet de dcaler les paramtres de la ligne de commande en "oubliant" le premier Question 3 : Il s'agit maintenant de crer les utilisateurs en indiquant le mot de passe crypt. Afin de crypter les mots de passes on va utiliser la fonction crypt() fournie par la bibliothque crypt.h. Cette fonction est dfinie comme suit : char*crypt(constchar*cl,constchar*salt); L'argument cl est le mot de passe saisi par l'utilisateur. salt est une chane de deux caractres pris dans l'ensemble [a-zA-Z0-9./]. Cette chane est utilise pour introduire une perturbation (parmi 4096) dans l'algorithme. cette fonction applique l'algorithme DES (Data Encryption Standard) pour le cryptage des mots de passe. Utiliser cette fonction pour crire un programme appel code.c qui prend en paramtre une chane de caractres et qui affiche la version crypte de cette chane. Pour compiler, n'oubliez pas d'inclure la bibliothque de cryptage (option -l crypt la fin de la commande de gcc) . Question 4 : Assembler les diffrentes programmes dvelopps pour raliser une commande shell qui permet d'automatiser la cration des comptes partir d'un fichier texte contant le noms, prnoms des tudiants.

Vous aimerez peut-être aussi