Your SlideShare is downloading. ×
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Rapport de projet shell
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Rapport de projet shell

1,930

Published on

Réalisation d'un interpréteur de commandes SHELL LINUX. LSI-SHELL

Réalisation d'un interpréteur de commandes SHELL LINUX. LSI-SHELL

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,930
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
84
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueProjet de Fin de Module PROGRAMMATION SYSTEME LSI-SHELLRéalisé par : Proposé par :ASSAOUY Samia.LASRI Ayyoub. Dr. El AMRANI Chaker.ZIANE Bilal.
  • 2. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueSommaireINTRODUCTION ............................................................................................................................................. 4CONTEXTE DU PROJET .................................................................................................................................. 5 Analyse du besoin : ................................................................................................................................... 5 L’Object du projet : ................................................................................................................................... 5 Technologies et langage :.......................................................................................................................... 5CARACTERISTIQUES GENERALE DU SYSTEME UNIX ...................................................................................... 6 Evolution : ................................................................................................................................................. 6 Philosophie :.............................................................................................................................................. 7 Caractéristiques : ...................................................................................................................................... 7 Le Noyau : ................................................................................................................................................. 8 Le SHELL : .................................................................................................................................................. 9 Différentes SHELL : .................................................................................................................................... 9UTILISATION DU SHELL................................................................................................................................ 10 Introduction : .......................................................................................................................................... 10 - SHELL ? ........................................................................................................................................ 10 - Utilisateurs ? ............................................................................................................................... 11 Fonctionnement du SHELL: ..................................................................................................................... 12 Mécanisme d’interprétation du SHELL : ................................................................................................. 12 - Définition : .................................................................................................................................. 12 - PROMPT : .................................................................................................................................... 12
  • 3. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique - Rechercher la commande : ......................................................................................................... 13 - Exécution d’une Commande : ..................................................................................................... 13 - Redirection : ................................................................................................................................ 14 - Lancement en arrière plan : ........................................................................................................ 14CONCEPTION ET ANALYSE........................................................................................................................... 15 Analyse fonctionnelle :............................................................................................................................ 15 - Spécifications : ................................................................................................................................ 15 - Acteurs : ...................................................................................................................................... 15 Analyse Organique : ................................................................................................................................ 15 - Spécification des Classes : ........................................................................................................... 15MISE EN ŒUVRE ET IMPLEMENTATION ..................................................................................................... 16 Technologies utilisés : ............................................................................................................................. 16 Détails sur les fonctions prédéfinis utilisés : ........................................................................................... 16 Détails sur les fonctions implémentés : .................................................................................................. 18CONCLUSION............................................................................................................................................... 20Captures d’écran: ........................................................................................................................................ 22
  • 4. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueINTRODUCTIONInterpréteur de commandes des Systèmes GNU/LINUX SHELL est devenu pourles administrateurs système, un outil incontournable.Ce rapport présente une description du projet de fin de module programmationsystème un SHEL personnalisé.Dans ce cadre, nous tenons à donner une présentation de l’environnementGNU/LINUX, ses caractéristiques et son noyau en expliquant la communicationentre l’utilisateur et le système (gérée par le noyau) via l’interpréteur descommandes le SHELL.
  • 5. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueCONTEXTE DU PROJETAnalyse du besoin : Notre premier travail a consisté à bien analyser le sujet avant de se lancer dansl’implémentation.Nous avons, dans un premier temps, commencé par étudier le SHELL GNU/Linuxpour récolter le maximum d’informations possibles.L’Object du projet :L’objet de notre projet c’est la réalisation d’un SHELL personnalisé, qui offre lesfonctionnalités suivantes :  Attendre jusqu’à ce que l’utilisateur fournis une commande valide.  Interprétation des commandes.  Communication entre les différentes commandes via les tubes de communication.  Redirection des entrées et des sortie de l’exécution de la commande.Technologies et langage :Système d’exploitation : UBUNTU.Langage de programmation : Langage C.
  • 6. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueCARACTERISTIQUES GENERALE DU SYSTEME UNIXEvolution :Le système d’exploitation UNIX a commencé en 1969 aux laboratoires derecherche en informatique d’AT&T pour répondre aux besoins des ingénieurs de lasociété que ken Thompson a écrit le système Unix, un système interactif qui metl’accent sur les utilitaires de développement logiciels, partage de fichiers.Le nom UNIX est attribué par opposition au système Multics. La premièreévolution interne marquante d’Unix a été sa réécriture ,par Ken Thompson etDenis Ritchie en langage C, lequel a été inventé pour la cause en 1971. En1975, le système Unix est distribué aux universités et aux centres derecherches. La principale université qui va travailler sur Unix est l’université de Berkeley, quiva produire ses propres versions appelées BSD pour Berkeley SoftwareDistribution.En 1979, les Bell Labs sortent leur version, la première à être diffusée dans lemonde industriel.On peut dire qu’elle est à l’origine du développement du marché Unix.Unix. Plusieurs facteurs vont alors jouer pour canaliser et recentrer l’offre Unix: lacomplexité croissante des systèmes et l’action des utilisateurs.(Sun Microsystems, Digital...) et lui permettre d’entrer dans le monde industriel.Le début des années 90 est marqué par le regroupement des constructeurs ausein de deux organisations: l’U.I. (Unix International) créée à partir del’accord entre A.T.&T. et Sun Microsystems d’une part et l’O.S.F. D’autre
  • 7. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatiquepart. Le premier accord a comme objectif la convergence entre les différentesversions.Philosophie :Conçus à l’origine comme un environnement de développement, Unix estaujourd’hui un système complet intégrant un grand nombre de fonctionnalitésorganisées en couches logicielles. en dehors de cette structure modulaire,Unix se caractérise également par les concepts introduits en matière de gestionde fichiers et de gestion des processus.Caractéristiques :Unix est le système dexploitation des grands serveurs par excellence.Multitâche, multiutilisateur, multiplateforme, réparti et sécurisé.Ecrit en langage C, permettant ainsi une portabilité sur la plupart des architectures.Sa popularité est, en fait, due à sa conception modulaire avec des interfacesbien définies ainsi que la disponibilité d’outils simples qui coexistent entres elles.Alors que les autres systèmes d’exploitation ressemblent à des ensemblesmonoblocs et relativement fermés, la conception du système repose surdifférents niveaux bien distincts: le noyau, un interpréteur de commandes (leSHELL), des bibliothèques et un nombre important d’utilitaires.Le système Linux possède notamment les avantages suivants : Le support des standards de linternet, cest-à-dire des protocoles TCP/IP, la famille de protocoles utilisée sur Internet. Il est donc un moyen gratuit de créer un réseau local, de se connecter à Internet et de mettre en place un serveur. Une sécurité accrue dû à la transparence de son code source et de la réactivité de la communauté lors des annonces de vulnérabilités.
  • 8. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique Un cloisonnement des espaces mémoire et de lespace disque couplé à une gestion pointue des droits permettant de gérer un grand nombre dutilisateurs avec un niveau de risque minimal. Un noyau entièrement configurable en fonction du matériel de la machine sur laquelle le système est installé afin de maximiser les performances.Le Noyau :Linux est architecturé autour dun noyau (KERNEL) chargé de prendre en chargele matériel. On appelle distribution lassemblage dun ensemble de logiciels autourdun noyau Linux afin de fournir un système clé en main. Le noyau dunedistribution peut-être mis à jour afin de permettre la prise en compte de matérielsrécents, toutefois cette manipulation consistant à recompiler le noyau est délicatecar elle nécessite un certain niveau de connaissance du système et du matériel. Larecompilation du noyau est à réserver aux spécialistes ou bien aux utilisateurs prêtsà rendre inutilisable leur système dans le but dapprendre.La plupart des distributions proposent également une installation graphique quileur est propre ainsi quun système de gestion de paquetages permettant dinstallerautomatiquement des logiciels en gérant les dépendances (les logiciels sous Linuxsont parfois liés à des librairies externes ou sappuient sur dautres logiciels).
  • 9. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueChaque distribution possède ses avantages et ses inconvénients. En effet sicertaines sont plus adaptées à des débutants et proposent des interfaces graphiquesévoluées, dautres privilégient la sécurité ou lévolutivité. Les distributions les plusconnues 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 connaît que deux états :  le travail ;  linactivité. Le SHELL, une fois lancé, est inactif : il attend quon lui donne des ordres.Quand on lui en donne un, il lexécute ; et quand il a terminé, il retourne à son étatdinactivité, en attente dun nouveau commandement.Différentes 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.
  • 10. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueUTILISATION DU SHELLIntroduction : - SHELL ?On parle souvent de Linux en disant que c’est le paradis des fanas de la « ligne decommandes ». En effet, sous Linux, ou dans tout système Unix, il est tout à faitpossible de gérer le système uniquement avec des commandes écrites parl’utilisateur ou par un programme, script …Le SHELL est donc l’interface entre la commande et le noyau linux. C’est en faitla couche la plus externe du système, celle qui entoure le noyau d’où son nom de« SHELL » ou « Coquille ». Ainsi, lorsque l’utilisateur tape une commande dansune console, le SHELL l’interprète et le transmet au noyau Linux. Pour interagiravec le noyau, il vous faut donc le SHELL et un terminal, une console virtuelle ouune autre interface graphique.Pour expliquer ceci autrement, le SHELL est un exécutable capable d’interpréterles commandes, de les transmettre au noyau et de retourner la réponse. Voici unschéma qui illustre la place du SHELL dans le système:On voit que le SHELL est bien à l’interface entre le noyau Linux et l’utilisateur parle biais d’une console, d’une application ou entre le noyau et une application, unscript.
  • 11. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique - Utilisateurs ?En résumé, à un utilisateur correspond les renseignements suivants:• un nom de login,• un mot de passe,• un iud,• un ou plusieurs groupes de travail,• un répertoire HOME,• un SHELL par défaut.  L’utilisateur de base:Il utilise les applicatifs mis à sa disposition, il «customise» les applications, ilpossède des droits d’accès traditionnels, il doit veiller à utiliser les ressources(disques, CPU,...) avec modération afin de ne pas surcharger le système.  Le programmeur:Il possède les mêmes droits que l’utilisateur de base, il a en plus la possibilité deprogrammer ses propres applications, il utilise donc dans ce cas, les outils dedéveloppement installés sur le système, il a accès aux compilateurs et àl’interpréteur.  L’administrateur système:Il possède les mêmes droits que le programmeur. Son rôle est plus grand: il gère lesystème, il possède des droits d’accès étendus (il peut descendre dans toutesles arborescences de son système), il crée des comptes pour tous lesutilisateurs de son serveur, il veille au bon fonctionnement général dusystème, il installe les outils nécessaires à la communauté, il surveille etrégularise la charge du système et des ressources de la machine.
  • 12. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueFonctionnement du SHELL: New Line correspond au retour à la ligne (généralement la touche Entrée).Mécanisme d’interprétation du SHELL : - Définition :Le SHELL est l’interpréteur de commandes, il n’est pas inclus dans le noyaud’Unix. Quand un utilisateur rentre dans le système, le SHELL par défaut qui lui aété donné, est automatiquement lancé et toute la session se déroule en faitdans ce SHELL. Lorsque cet utilisateur tape une commande, le SHELL la lit,l’interprète et lance son exécution. La ligne tapée peut ne comporter qu’une seulecommande mais peut aussi être complexe. - PROMPT :Le SHELL indique qu’il est prêt à recevoir une nouvelle commande en affichant leprompt (par défaut «$»). Toute commande se termine par un passage à laligne, dans certains cas, le passage à la ligne à une signification particulièrepour la commande tapée et n’est donc pas considéré comme un terminateur decommande. Dans ce cas, le SHELL affiche le deuxième prompt (par défaut«>») pour indiquer qu’il attend la suite de la commande.Il est aussi possible de taper plusieurs commandes sur la même ligne en lesséparant par un «;».
  • 13. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique - Rechercher la commande :Si la commande tapée correspond à une commande interne du SHELL, cettecommande est exécutée à l’intérieur de ce SHELL. Sinon, si la commandecorrespond à une fonction (cf. partie sur le langage de programmation) elle est elleaussi exécutée à l’intérieur du SHELL.Dans tous les autres cas, la commande se réfère à un fichier de l’arborescence. Si lenom ne comporte pas de caractère «/», le SHELL examine la variable PATH pourrechercher le répertoire où ce trouve cette commande. Un nouveau SHELL estalors créé pour exécuter cette commande.Si la commande est un script SHELL, le SHELL lit toutes les lignes du script et lesexécutent. Si la commande appelle un fichier binaire exécutable, le code et lesdonnées associées du processus du deuxième SHELL sont remplacés par le code etles données associés à la commande. - Exécution d’une Commande :La première chose c’est de lire la commande, l’analyser si elle est valide, et ensuitel’exécuter Pour exécuter une commande son nom suffit généralement. Cela veut dire dans ce cas que c’est une commande interne ou qu’elle est localisable dans le chemin d’exécution de l’utilisateur (PATH). Dans le cas contraire, il faut :  donner le chemin absolu de la commande  ou se trouver dans le répertoire où se trouve la commande
  • 14. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique - Redirection :Avant de lancer un processus, le SHELL lui attribue trois fichiers:• Une entrée standard (par défaut le clavier),• Une sortie standard (par défaut l’écran),• Une sortie d’erreur standard (par défaut l’écran).Ces trois directions peuvent être liées à d’autres fichiers que ceux indiqués ci-dessus grâce aux commandes de redirection. Le SHELL associera donc d’autresfichiers que le clavier ou l’écran et il lancera ensuite la commande. - Lancement en arrière plan :Lorsqu’on lance une commande, le SHELL attend la fin de l’exécution de cettedernière avant de redonner la main à l’utilisateur.Si on ajoute un «&» à la fin de la ligne de commande, le SHELLn’attends plus la fin de l’exécution de cette commande, il la lance en arrièreplan.Quand on lance une commande en arrière plan dans un SHELL interactif (c’est àdire pas dans un Script SHELL), le SHELL renvoie à l’écran le numéro du jobpour le SHELL qui a lancé la commande ainsi que le numéro du processus dans latable des processus.Le caractère «&» est un terminateur de commande, il est donc possible detaper une commande à la suite sans passage à la ligne.
  • 15. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueCONCEPTION ET ANALYSEAnalyse fonctionnelle : - Spécifications :  Le SHELL demande la commande en invite de commande ( PROMPT ).  Le SHELL interprète un ou plusieurs commandes.  La commande a un ou plusieurs arguments.  La sortie de l’exécution d’une commande peut être redirigée vers un fichier.  Communication entre commandes par les pipes. - Acteurs :Utilisateur du SHELL peut exécuter un ou plusieurs commandes.Analyse Organique : - Spécification des Classes :Une seule classe suffit pour la mise en œuvre, c’est la classe commande.
  • 16. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueMISE EN ŒUVRE ET IMPLEMENTATIONTechnologies utilisés :Langage C : un langage interactif, portable, inventé avec UNIX par DENNISRITCHIE.Détails sur les fonctions prédéfinis utilisés :#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 première occurrence ducaractère c dans la chaîne s.#include <string.h>char *strtok (char *s, const char *delim);Un élément lexical (token) est une chaîne non vide de caractères quinappartiennent pas à la chaîne delim, suivie de 0 ou dun caractère 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 */
  • 17. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique mode_t st_mode, /* type et droits d’accès */ nlink_t st_nlink; /* nombre de liens physiques (Hard) */ uid_t st_uid; /* propriétaire du fichier */ gid_t st_gid; /* groupe propriétaire du fichier */ off_t st_size; /* tai11e du fichier */ time_t st_atime; /* date de dernier accès */ time_t st_mtime ; /* date de dernière modification */ time_t st_ctime; /* date de dern. modif. du i–noeud */} Contient la définition de la structure stat qui est utilisée pour obtenir lesinformations contenues dans le nœud d’un fichier.char * getenv ( const char * name );Retourne la valeur des variables d’environnements.free( <Pointeur> );libère le bloc de mémoire désigné par le <Pointeur>; na pas deffet si le pointeur ala valeur zéro.char *fgets( char *str, int nb, FILE *flux) ;La fonction fgets() lit jusquà nb-1 caractères depuis le fichier flux et stocke lerésultat dans str. La chaîne de caractère produite par fgets() est toujours terminéepar NULL.#include <assert.h>void assert( int exp );assert(expression). Si expression est fausse (ou égale à 0), alors un messagederreur est affiché et le programme est arrêté par abort
  • 18. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueDétails sur les fonctions implémentés :Fonction = void afficherPrompt()Description : Affiche une prompt pour l’utilisateur : UTILISATEUR @ CHEMAINFonction = void lireLaCommande(char* buffer)Description : Lit l’entrée standard, vide l’entrée si on dépasse la taille dubuffer.Termine à ‘n’.Fonction = void remplirLaStructure(char* commandLine, structcommand_t* parsed_command)Description : Prends la ligne de commande séparée par espace. Argc Le nombre des arguments. Argv Les arguments séparés par espace.Fonction = char* commandesPerso(char* cmd,int i)Description : Définition de nos commandes personnalisées.Fonction = void passerLePath(char* dirs[])Description :
  • 19. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique Affiche les dossiers séparés par le délimiteur ‘ :’Fonction = char* chercherLaCommandeDansLesPaths(char* argv[], char*dir[])Description : Rechercher la commande si existe ou pas, et Vérifie si le fichier ordinaide ales droit d’exécution.Fonction = void lesRedirections(struct command_t* command, struct IO*fid)Description : Fonction de gestion et détection des redirections.Fonction = void executerLesCommandes(struct command_t* command, structcommand_t* command2, int pipe_proc)Description : Détermine la manière d’exécution des processus, et gère les pipes sinécessaire.
  • 20. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueCONCLUSIONNotre projet nous a permit de renforcer tout les connaissances que nous avonsacquis dans la programmation système, et nous a donné une occasion bénéfique surdifférents plans technique et technologique.Cette initiative n’est qu’un début pour plusieurs autres projets beaucoup plusétendues. Nous espérons que nous étions à la hauteur et que notre effort seraapprécié.
  • 21. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueANNEXES
  • 22. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système InformatiqueCaptures d’écran:
  • 23. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique
  • 24. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique
  • 25. Faculté Des Sciences et Techniques de Tanger - Département Génie Informatique Cycle ingénieur Logiciel et Système Informatique

×