Vous êtes sur la page 1sur 25

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Projet de Fin de Module


PROGRAMMATION SYSTEME

LSI-SHELL
Ralis par : ASSAOUY Samia. LASRI Ayyoub. ZIANE Bilal. Dr. El AMRANI Chaker. Propos par :

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Sommaire
INTRODUCTION ............................................................................................................................................. 4

CONTEXTE DU PROJET .................................................................................................................................. 5

Analyse du besoin : ................................................................................................................................... 5 LObject du projet : ................................................................................................................................... 5 Technologies et langage :.......................................................................................................................... 5

CARACTERISTIQUES GENERALE DU SYSTEME UNIX ...................................................................................... 6

Evolution : ................................................................................................................................................. 6 Philosophie :.............................................................................................................................................. 7 Caractristiques : ...................................................................................................................................... 7 Le Noyau : ................................................................................................................................................. 8 Le SHELL : .................................................................................................................................................. 9 Diffrentes SHELL : .................................................................................................................................... 9

UTILISATION DU SHELL................................................................................................................................ 10

Introduction : .......................................................................................................................................... 10 SHELL ? ........................................................................................................................................ 10 Utilisateurs ? ............................................................................................................................... 11

Fonctionnement du SHELL: ..................................................................................................................... 12 Mcanisme dinterprtation du SHELL : ................................................................................................. 12 Dfinition : .................................................................................................................................. 12 PROMPT : .................................................................................................................................... 12

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Rechercher la commande : ......................................................................................................... 13 Excution dune Commande : ..................................................................................................... 13 Redirection : ................................................................................................................................ 14 Lancement en arrire plan : ........................................................................................................ 14

CONCEPTION ET ANALYSE........................................................................................................................... 15

Analyse fonctionnelle :............................................................................................................................ 15 Spcifications : ................................................................................................................................ 15 Acteurs : ...................................................................................................................................... 15

Analyse Organique : ................................................................................................................................ 15 Spcification des Classes : ........................................................................................................... 15

MISE EN UVRE ET IMPLEMENTATION ..................................................................................................... 16

Technologies utiliss : ............................................................................................................................. 16 Dtails sur les fonctions prdfinis utiliss : ........................................................................................... 16 Dtails sur les fonctions implments : .................................................................................................. 18

CONCLUSION............................................................................................................................................... 20 Captures dcran: ........................................................................................................................................ 22

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

INTRODUCTION

Interprteur de commandes des Systmes GNU/LINUX SHELL est devenu pour les administrateurs systme, un outil incontournable. Ce rapport prsente une description du projet de fin de module programmation systme un SHEL personnalis. Dans ce cadre, nous tenons donner une prsentation de lenvironnement GNU/LINUX, ses caractristiques et son noyau en expliquant la communication entre lutilisateur et le systme (gre par le noyau) via linterprteur des commandes le SHELL.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

CONTEXTE DU PROJET

Analyse du besoin :
Notre premier travail a consist bien analyser le sujet avant de se lancer dans limplmentation. Nous avons, dans un premier temps, commenc par tudier le SHELL GNU/Linux pour rcolter le maximum dinformations possibles.

LObject du projet :
Lobjet de notre projet cest la ralisation dun SHELL personnalis, qui offre les fonctionnalits suivantes : Attendre jusqu ce que lutilisateur fournis une commande valide. Interprtation des commandes. Communication entre les diffrentes commandes via les tubes de communication. Redirection des entres et des sortie de lexcution de la commande.

Technologies et langage :
Systme dexploitation : Langage de programmation : UBUNTU. Langage C.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

CARACTERISTIQUES GENERALE DU SYSTEME UNIX


Evolution :
Le systme dexploitation UNIX a commenc en 1969 aux laboratoires de recherche en informatique dAT&T pour rpondre aux besoins des ingnieurs de la socit que ken Thompson a crit le systme Unix, un systme interactif qui met laccent sur les utilitaires de dveloppement logiciels, partage de fichiers. Le nom UNIX est attribu par opposition au systme Multics. La premire volution interne marquante dUnix a t sa rcriture ,par Ken Thompson et Denis Ritchie en langage C, lequel a t invent pour la cause en 1971. En 1975, le systme Unix est distribu aux universits et aux centres de recherches. La principale universit qui va travailler sur Unix est luniversit de Berkeley, qui va produire ses propres versions appeles BSD pour Berkeley Software Distribution. En 1979, les Bell Labs sortent leur version, la premire tre diffuse dans le monde industriel. On peut dire quelle est lorigine du dveloppement du march Unix. Unix. Plusieurs facteurs vont alors jouer pour canaliser et recentrer loffre Unix: la complexit croissante des systmes et laction des utilisateurs. (Sun Microsystems, Digital...) et lui permettre dentrer dans le monde industriel. Le dbut des annes 90 est marqu par le regroupement des constructeurs au sein de deux organisations: lU.I. (Unix International) cre partir de laccord entre A.T.&T. et Sun Microsystems dune part et lO.S.F. Dautre

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

part. Le premier accord a comme objectif la convergence entre les diffrentes versions.

Philosophie :
Conus lorigine comme un environnement de dveloppement, Unix est aujourdhui un systme complet intgrant un grand nombre de fonctionnalits organises en couches logicielles. en dehors de cette structure modulaire, Unix se caractrise galement par les concepts introduits en matire de gestion de fichiers et de gestion des processus.

Caractristiques :
Unix est le systme d'exploitation des grands serveurs par excellence. Multitche, multiutilisateur, multiplateforme, rparti et scuris. Ecrit en langage C, permettant ainsi une portabilit sur la plupart des architectures. Sa popularit est, en fait, due sa conception modulaire avec des interfaces bien dfinies ainsi que la disponibilit doutils simples qui coexistent entres elles. Alors que les autres systmes dexploitation ressemblent des ensembles monoblocs et relativement ferms, la conception du systme repose sur diffrents niveaux bien distincts: le noyau, un interprteur de commandes (le SHELL), des bibliothques et un nombre important dutilitaires. Le systme Linux possde notamment les avantages suivants :

Le support des standards de l'internet, c'est--dire des protocoles TCP/IP, la famille de protocoles utilise sur Internet. Il est donc un moyen gratuit de crer un rseau local, de se connecter Internet et de mettre en place un serveur. Une scurit accrue d la transparence de son code source et de la ractivit de la communaut lors des annonces de vulnrabilits.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Un cloisonnement des espaces mmoire et de l'espace disque coupl une gestion pointue des droits permettant de grer un grand nombre d'utilisateurs avec un niveau de risque minimal. Un noyau entirement configurable en fonction du matriel de la machine sur laquelle le systme est install afin de maximiser les performances.

Le Noyau :
Linux est architectur autour d'un noyau (KERNEL) charg de prendre en charge le matriel. On appelle distribution l'assemblage d'un ensemble de logiciels autour d'un noyau Linux afin de fournir un systme cl en main. Le noyau d'une distribution peut-tre mis jour afin de permettre la prise en compte de matriels rcents, toutefois cette manipulation consistant recompiler le noyau est dlicate car elle ncessite un certain niveau de connaissance du systme et du matriel. La recompilation du noyau est rserver aux spcialistes ou bien aux utilisateurs prts rendre inutilisable leur systme dans le but d'apprendre. La plupart des distributions proposent galement une installation graphique qui leur est propre ainsi qu'un systme de gestion de paquetages permettant d'installer automatiquement des logiciels en grant les dpendances (les logiciels sous Linux sont parfois lis des librairies externes ou s'appuient sur d'autres logiciels).

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Chaque distribution possde ses avantages et ses inconvnients. En effet si certaines sont plus adaptes des dbutants et proposent des interfaces graphiques volues, d'autres privilgient la scurit ou l'volutivit. Les distributions les plus connues sont :

La distribution RedHat ; La distribution Debian ; La distribution SuSe ; La distribution Knoppix ; La distribution Slackware ; La distribution Mandriva.

Le SHELL :

Le SHELL, comme le normalien, ne connat que deux tats :


le travail ; l'inactivit.

Le SHELL, une fois lanc, est inactif : il attend qu'on lui donne des ordres. Quand on lui en donne un, il l'excute ; et quand il a termin, il retourne son tat d'inactivit, en attente d'un nouveau commandement.

Diffrentes SHELL :
Il y a deux familles de SHELL :

le Bourne-SHELL (sh) : o z-SHELL (zsh). o Bash. o ksh. o le c-SHELL (csh) :

tcsh.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

UTILISATION DU SHELL
Introduction :
- SHELL ? On parle souvent de Linux en disant que cest le paradis des fanas de la ligne de commandes . En effet, sous Linux, ou dans tout systme Unix, il est tout fait possible de grer le systme uniquement avec des commandes crites par lutilisateur ou par un programme, script Le SHELL est donc linterface entre la commande et le noyau linux. Cest en fait la couche la plus externe du systme, celle qui entoure le noyau do son nom de SHELL ou Coquille . Ainsi, lorsque lutilisateur tape une commande dans une console, le SHELL linterprte et le transmet au noyau Linux. Pour interagir avec le noyau, il vous faut donc le SHELL et un terminal, une console virtuelle ou une autre interface graphique. Pour expliquer ceci autrement, le SHELL est un excutable capable dinterprter les commandes, de les transmettre au noyau et de retourner la rponse. Voici un schma qui illustre la place du SHELL dans le systme:

On voit que le SHELL est bien linterface entre le noyau Linux et lutilisateur par le biais dune console, dune application ou entre le noyau et une application, un script.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

- Utilisateurs ? En rsum, un utilisateur correspond les renseignements suivants: un nom de login, un mot de passe, un iud, un ou plusieurs groupes de travail, un rpertoire HOME, un SHELL par dfaut. Lutilisateur de base: Il utilise les applicatifs mis sa disposition, il customise les applications, il possde des droits daccs traditionnels, il doit veiller utiliser les ressources (disques, CPU,...) avec modration afin de ne pas surcharger le systme. Le programmeur: Il possde les mmes droits que lutilisateur de base, il a en plus la possibilit de programmer ses propres applications, il utilise donc dans ce cas, les outils de dveloppement installs sur le systme, il a accs aux compilateurs et linterprteur. Ladministrateur systme: Il possde les mmes droits que le programmeur. Son rle est plus grand: il gre le systme, il possde des droits daccs tendus (il peut descendre dans toutes les arborescences de son systme), il cre des comptes pour tous les utilisateurs de son serveur, il veille au bon fonctionnement gnral du systme, il installe les outils ncessaires la communaut, il surveille et rgularise la charge du systme et des ressources de la machine.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Fonctionnement du SHELL:
New Line correspond au retour la ligne (gnralement la touche Entre).

Mcanisme dinterprtation du SHELL :


- Dfinition : Le SHELL est linterprteur de commandes, il nest pas inclus dans le noyau dUnix. Quand un utilisateur rentre dans le systme, le SHELL par dfaut qui lui a t donn, est automatiquement lanc et toute la session se droule en fait dans ce SHELL. Lorsque cet utilisateur tape une commande, le SHELL la lit, linterprte et lance son excution. La ligne tape peut ne comporter quune seule commande mais peut aussi tre complexe. - PROMPT : Le SHELL indique quil est prt recevoir une nouvelle commande en affichant le prompt (par dfaut $). Toute commande se termine par un passage la ligne, dans certains cas, le passage la ligne une signification particulire pour la commande tape et nest donc pas considr comme un terminateur de commande. Dans ce cas, le SHELL affiche le deuxime prompt (par dfaut >) pour indiquer quil attend la suite de la commande. Il est aussi possible de taper plusieurs commandes sur la mme ligne en les sparant par un ;.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

- Rechercher la commande : Si la commande tape correspond une commande interne du SHELL, cette commande est excute lintrieur de ce SHELL. Sinon, si la commande correspond une fonction (cf. partie sur le langage de programmation) elle est elle aussi excute lintrieur du SHELL. Dans tous les autres cas, la commande se rfre un fichier de larborescence. Si le nom ne comporte pas de caractre /, le SHELL examine la variable PATH pour rechercher le rpertoire o ce trouve cette commande. Un nouveau SHELL est alors cr pour excuter cette commande. Si la commande est un script SHELL, le SHELL lit toutes les lignes du script et les excutent. Si la commande appelle un fichier binaire excutable, le code et les donnes associes du processus du deuxime SHELL sont remplacs par le code et les donnes associs la commande.

- Excution dune Commande : La premire chose cest de lire la commande, lanalyser si elle est valide, et ensuite lexcuter Pour excuter une commande son nom suffit gnralement. Cela veut dire dans ce cas que cest une commande interne ou quelle est localisable dans le chemin dexcution de lutilisateur (PATH). Dans le cas contraire, il faut :

donner le chemin absolu de la commande ou se trouver dans le rpertoire o se trouve la commande

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

- Redirection : Avant de lancer un processus, le SHELL lui attribue trois fichiers: Une entre standard (par dfaut le clavier), Une sortie standard (par dfaut lcran), Une sortie derreur standard (par dfaut lcran). Ces trois directions peuvent tre lies dautres fichiers que ceux indiqus cidessus grce aux commandes de redirection. Le SHELL associera donc dautres fichiers que le clavier ou lcran et il lancera ensuite la commande.

- Lancement en arrire plan : Lorsquon lance une commande, le SHELL attend la fin de lexcution de cette dernire avant de redonner la main lutilisateur. Si on ajoute un & la fin de la ligne de commande, le SHELL nattends plus la fin de lexcution de cette commande, il la lance en arrire plan. Quand on lance une commande en arrire plan dans un SHELL interactif (cest dire pas dans un Script SHELL), le SHELL renvoie lcran le numro du job pour le SHELL qui a lanc la commande ainsi que le numro du processus dans la table des processus. Le caractre & est un terminateur de commande, il est donc possible de taper une commande la suite sans passage la ligne.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

CONCEPTION ET ANALYSE
Analyse fonctionnelle : - Spcifications :
Le SHELL demande la commande en invite de commande ( PROMPT ). Le SHELL interprte un ou plusieurs commandes. La commande a un ou plusieurs arguments. La sortie de lexcution dune commande peut tre redirige vers un fichier. Communication entre commandes par les pipes.

- Acteurs : Utilisateur du SHELL peut excuter un ou plusieurs commandes.

Analyse Organique :
- Spcification des Classes : Une seule classe suffit pour la mise en uvre, cest la classe commande.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

MISE EN UVRE ET IMPLEMENTATION


Technologies utiliss :
Langage C : un langage interactif, portable, invent avec UNIX par DENNIS RITCHIE.

Dtails sur les fonctions prdfinis utiliss :

#include <string.h> char *strchr (const char *s, int c); char *strrchr (const char *s, int c); La fonction strchr() renvoie un pointeur sur la premire occurrence du caractre c dans la chane s. #include <string.h> char *strtok (char *s, const char *delim); Un lment lexical (token) est une chane non vide de caractres qui n'appartiennent pas la chane delim, suivie de 0 ou d'un caractre appartenant delim. #include <sys/types.h> #include <sys/stat.h> struct stat { dev_t st_dev, /* identification du disque logique */ ino_t st_ino; /* i-nombre du fichier sur ce disque */

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

mode_t st_mode, /* type et droits daccs */ nlink_t st_nlink; /* nombre de liens physiques (Hard) */ uid_t st_uid; /* propritaire du fichier */ gid_t st_gid; /* groupe propritaire du fichier */ off_t st_size; /* tai11e du fichier */ time_t st_atime; /* date de dernier accs */ time_t st_mtime ; /* date de dernire modification */ time_t st_ctime; /* date de dern. modif. du inoeud */ } Contient la dfinition de la structure stat qui est utilise pour obtenir les informations contenues dans le nud dun fichier. char * getenv ( const char * name ); Retourne la valeur des variables denvironnements. free( <Pointeur> ); libre le bloc de mmoire dsign par le <Pointeur>; n'a pas d'effet si le pointeur a la valeur zro. char *fgets( char *str, int nb, FILE *flux) ; La fonction fgets() lit jusqu' nb-1 caractres depuis le fichier flux et stocke le rsultat dans str. La chane de caractre produite par fgets() est toujours termine par NULL. #include <assert.h> void assert( int exp ); assert(expression). Si expression est fausse (ou gale 0), alors un message d'erreur est affich et le programme est arrt par abort

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Dtails sur les fonctions implments :


Fonction = Description : Affiche une prompt pour lutilisateur : UTILISATEUR @ CHEMAIN Fonction = Description : Lit lentre standard, vide lentre si on dpasse la taille du buffer.Termine \n. Fonction = void remplirLaStructure(char* commandLine, struct command_t* parsed_command) Description : Prends la ligne de commande spare par espace. Argc Le nombre des arguments. Argv Les arguments spars par espace. void lireLaCommande(char* buffer) void afficherPrompt()

Fonction = Description :

char* commandesPerso(char* cmd,int i)

Dfinition de nos commandes personnalises. Fonction = Description : void passerLePath(char* dirs[])

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Affiche les dossiers spars par le dlimiteur :

Fonction = dir[]) Description :

char* chercherLaCommandeDansLesPaths(char* argv[], char*

Rechercher la commande si existe ou pas, et Vrifie si le fichier ordinaide a les droit dexcution. Fonction = fid) Description : Fonction de gestion et dtection des redirections. Fonction = void executerLesCommandes(struct command_t* command, struct command_t* command2, int pipe_proc) Description : Dtermine la manire dexcution des processus, et gre les pipes si ncessaire. void lesRedirections(struct command_t* command, struct IO*

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

CONCLUSION

Notre projet nous a permit de renforcer tout les connaissances que nous avons acquis dans la programmation systme, et nous a donn une occasion bnfique sur diffrents plans technique et technologique.

Cette initiative nest quun dbut pour plusieurs autres projets beaucoup plus tendues. Nous esprons que nous tions la hauteur et que notre effort sera apprci.

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

ANNEXES

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Captures dcran:

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique

Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique