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
Evolution : ................................................................................................................................................. 6 Philosophie :.............................................................................................................................................. 7 Caractristiques : ...................................................................................................................................... 7 Le Noyau : ................................................................................................................................................. 8 Le SHELL : .................................................................................................................................................. 9 Diffrentes SHELL : .................................................................................................................................... 9
UTILISATION DU SHELL................................................................................................................................ 10
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
Technologies utiliss : ............................................................................................................................. 16 Dtails sur les fonctions prdfinis utiliss : ........................................................................................... 16 Dtails sur les fonctions implments : .................................................................................................. 18
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
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 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 :
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).
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 :
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.
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
#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
Fonction = Description :
Facult Des Sciences et Techniques de Tanger - Dpartement Gnie Informatique Cycle ingnieur Logiciel et Systme Informatique
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