Introduction aux systèmes informatiques. TRAVAUX PRATIQUES 4 Scripts sous Linux

Documents pareils
Environnements informatiques

Algorithmique et Programmation, IMA

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

1. Structure d'un programme FORTRAN 95

TP1 - Prise en main de l environnement Unix.

Initiation à la programmation en Python

Corrigé des TD 1 à 5

Gestion des utilisateurs : Active Directory

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)


Cours Informatique Master STEP

sshgate Patrick Guiran Chef de projet support

Pack Evolix Serveur Mail Documentation d'utilisation

STAGE IREM 0- Premiers pas en Python

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Table des matières Hakim Benameurlaine 1

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Les clients GNU/Linux

Unix/Linux I. 1 ere année DUT. Université marne la vallée

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

TP 1. Prise en main du langage Python

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

La mémoire. Un ordinateur. L'octet. Le bit

Cours Programmation Système

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

TP1. Outils Java Eléments de correction

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Examen Médian - 1 heure 30

Programmation C++ (débutant)/instructions for, while et do...while

Le prototype de la fonction main()

Chapitre 4 : Édition de fichiers texte - Vi

.NET - Classe de Log

Outils pour la pratique

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

La gestion des boîtes aux lettres partagées

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

ACTIVITÉ DE PROGRAMMATION

Les différents types de données et leurs opérations de base

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot

Introduction aux Systèmes et aux Réseaux

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Algorithmique et programmation : les bases (VBA) Corrigé

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

1 Démarrage de Marionnet

FinImportExport Documentation Utilisateur Gestion d'environnement dans Fininfo Market

3IS - Système d'exploitation linux - Programmation système

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Nous avons utilisé plusieurs Script :

TP 1 Prise en main de l environnement Unix

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

INSTALLATION DE PEGASUS MAIL 3.12 c FR Avec l interface Harp

Aide-Mémoire unix. 9 février 2009

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Module : Informatique Générale 1. Les commandes MS-DOS

Dans l'article précédent, vous avez appris

Perl Orienté Objet BioPerl There is more than one way to do it

Logiciel : GLPI Version : SYNCRHONISATION DE GLPI AVEC ACTIVE DIRECTORY. Auteur : Claude SANTERO Config. : Windows 2003.

Séance 0 : Linux + Octave : le compromis idéal

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

Bernard HAMM, Évelyne LAVOISIER

IFT Systèmes d exploitation - TP n 1-20%

Classe et groupe : 1P 3 SEN TRI. Ubuntu : serveur Contrôleur de Domaine (PDC) avec SAMBA

INF 321 : mémento de la syntaxe de Java

MANUEL UTILISATEUR BALADEUR SANTÉ AUXILIAIRES MÉDICAUX ET SAGES-FEMMES C.D.C 1.40

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Module d anonymisation

ASR3. Partie 2 Active Directory. 1 Arnaud Clérentin, IUT d Amiens, département Informatique,

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

Galaxy est une plateforme de traitements (bio)informatiques accessible depuis l'url : (en précisant votre login et mot de passe LDAP «genotoul»).

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

TP 4 de familiarisation avec Unix

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Prise en main d une Cyberclasse

Introduction à MATLAB R

Bases de données. Table des matières. Introduction. (ReferencePlus.ca)

FreeNAS Shere. Par THOREZ Nicolas

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

Introduction aux Systèmes et aux Réseaux

SYSTÈME DE GESTION DE FICHIERS

Python Les fondamentaux du langage

TP Service HTTP Serveur Apache Linux Debian

LibreOffice Calc : introduction aux tableaux croisés dynamiques

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Programme awk------introduction rapide

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

VoIP - TPs Etude et implémentation

Architecture de la plateforme SBC

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Transcription:

TRAVAUX PRATIQUES 4 Scripts sous Linux L objectif de ce TP est d approfondir la réalisation de programmes scripts abordée lors du précédent TP sous les systèmes d exploitation de type UNIX pour l'automatisation de traitements. Une fois votre session ouverte sous un système d exploitation de type UNIX, ouvrez un terminal pour entrer les commandes décrites dans l énoncé. Dans la suite, le prompt du terminal sera symbolisé par «$>». Notes utiles de syntaxe On rappel que dans vos programmes scripts, vous avez la possibilité de déclarer des variables (dont doit suivre la construction suivante, première lettre dans l'ensemble [a-za-z] et les caractères suivants [a-za-z0-9_]). L'affectation d'une variable se fait comme suit : var="val", alors que l'accès à son contenu comme suit : $var. De plus, une variable peut être supprimée de la mémoire (supprimer son existence) à l'aide la commande unset. Il est possible de récupérer le résultat d'une commande afin de l'afficher ou de le stocker dans une variable, pour cela il faut utiliser les symboles $( ) comme dans l'exemple suivant affectant le résultat de ls -l grep toto dans la variable res : $> res=$(ls -l grep toto) Certains caractères ont une signification spéciale pour le shell (par exemple, $, >, >>, <, &, *,?, ), pour qu'ils perdent leur signification spéciale il existe trois jeux de caractères à utiliser : les simples quotes : doivent être utilisées en nombre pair et retirent la signification de tous les caractères spéciaux entre deux quotes, comme dans l'exemple ci-dessous : $> echo '*? > >> < << $PATH $(ls -l) &' résultat : *? > >> < << $PATH $(ls -l) & le caractère d'échappement (ou antislash \) : retire la signification d'un caractère celui qui le suit, comme dans l'exemple suivant (où le premier antislash s'applique à l'apostrophe, le second au 3e antislash et le dernier au symbole $) : $> echo L\'exemple \\\$HOME résultat : L'exemple \$HOME les guillemets : retirent la signification de tous les symboles exceptés pour les symboles spéciaux $, $( ) et \, comme dans l exemple ci-dessous : $> echo "> et sont proteges, $HOME est substitue, $ (logname) est execute et l antislash protege le caractere \"." résultat : > et sont protoges, /home/steph est substitue, steph est execute et l antislash protege le caractere ". Il est possible de mettre des commentaires dans un script, tout ligne commençant par le symbole # sera considéré comme une ligne de commentaire (à l exception de la première ligne commençant par les symboles #! suivi du chemin d accès vers le shell à exécuter. 1

Code de retour En plus des variables particulières déjà vu précédemment, il existe quelques variables qui peuvent être utiles pour certaines utilisations. Nous donnons ci-dessous certaines de ces variables avec leur signification : Nom variable Description $? Stocke le code retour de la dernière commande appelée, contenant un entier compris entre 0 et 255 (0 : la commande s est exécutée correctement, sinon erreur) $$ Stocke le PID (identifiant) associé au processus exécutant le script $! Stocke le PID (identifiant) du processus exécutant une commande en tâche en arrière plan (utilisation du symbole &) Il est également possible d utiliser la commande exit suivi du code retour afin d informer le processus du déroulement du script, par exemple exit 0 pour indiquer que tout s est bien déroulé. EXERCICE 1 Dans cet exercice, nous allons considérer le code retourné par une commande après son appel afin de déterminer si elle a été correctement exécutée. Nous allons utiliser la commande read qui affecte dans une variable une chaîne de caractères lue sur l'entrée standard (le clavier par défaut). Voici ci-dessous deux exemple d'utilisation de cette commande (la première utilisant une seule variable et la seconde plusieurs variables) : $> read var1 une chaine entree au clavier $> echo $var1 une chaine entree au clavier ou $> read var1 var2 une chaine entree au clavier $> echo $var1 une $> echo $var2 chaine entree au clavier Remarques : La commande read utilise les caractères de séparation définis dans la variable d'environnement IFS qui contient par défaut les caractères espace, tabulation et saut de ligne. De plus, cette commande retourne un code de retour vrai (valeur égale à 0) si une chaîne de caractères a été récupérée. Question 1 Réalisez un script utilisant la commande read pour récupérer les nom et prénom dans deux variables différentes demandés à un utilisateur. Le script doit afficher le code de retour de la commande read ainsi que le PID du processus exécutant le script. 2

EXERCICE 2 Dans cet exercice, nous allons utiliser la structure de contrôle conditionnelle afin de réaliser des traitements si une condition (formule booléenne) est vérifiée. La commande test expression permet de faire des tests sur des fichiers, des chaînes de caractères ou des nombres. Cette commande renvoie un code 0 (vrai) ou 1 (faux) consultable à l'aide de la variable $? présentée à l'exercice précédent. Il est également possible d'utiliser la syntaxe suivante qui est équivalente (avec un espace avant et après l'expression) : [ expression ] Il est recommandé d utiliser des guillemets autour des variables dans une expression, cela permet d éviter une erreur de syntaxe retournée par test dans le cas où la variable est vide. On rappel ci-dessous les divers paramètres utilisables avec la commandes test : Expression Code retour test -a nom_fichier Vrai si le fichier existe test -f nom_fichier Vrai si le fichier est de type ordinaire test -d nom_fichier Vrai si le fichier est de type répertoire test -h nom_fichier Vrai si fichier est de type lien symbolique test -s nom_fichier Vrai si fichier non vide test -r nom_fichier Vrai si le fichier est accessible en lecture test -w nom_fichier Vrai si le fichier est accessible en écriture test -x nom_fichier Vrai si le fichier est accessible en exécution test -z ch1 Vrai si la chaine ch1 est de longueur 0 test -n ch1 Vrai si la chaine ch1 n est pas de longueur 0 test ch1=ch2 Vrai si les deux chaines sont égales test ch1!=ch2 Vrai si les deux chaines sont différentes test ch1 Vrai si la chaine ch1 n est pas vide test nb1 -eq nb2 Vrai si nb1 est égal à nb2 test nb1 -ne nb2 Vrai si nb1 est différent de nb2 test nb1 -lt nb2 Vrai si nb1 est strictement inférieur à nb2 test nb1 -le nb2 Vrai si nb1 est inférieur ou égal à nb2 test nb1 -gt nb2 Vrai si nb1 est strictement supérieur à nb2 test nb1 -ge nb2 Vrai si nb1 est supérieur ou égal à nb2 Il est possible d utiliser des conditions plus complexes pour la commande test à l aide de d opérateurs logiques listés dans le tableau ci-dessous : Opérateur de la commande test! Négation -a ET logique -o OU logique Description L ordre d évaluation des opérateurs peut être imposé grâce aux caractères de regroupement qui sont \( et \). Question 1 Donnez la commande permettant de tester que /etc/passwd est bien un fichier et d'afficher le résultat du test. 3

Même question en testant si c est un répertoire, puis si ce n est pas un répertoire. Question 2 Donnez la commande permettant de tester si vous avez uniquement les droits d accès en lecture au fichier /etc/passwd et d'afficher le résultat du test. Question 3 Donnez la suite de commandes permettant de récupérer deux entiers fournit par l utilisateur et de tester s ils sont égaux. Même question pour tester si le premier nombre entré est strictement supérieur au second. Question 4 Donnez la suite de commandes permettant de récupérer deux chaînes de caractères fournies par l utilisateur et de tester si chaque chaîne possède une longueur nulle en affichant le résultat du test, puis de tester si ces deux chaînes sont ne sont pas égales. EXERCICE 3 Le shell offre la possibilité d exécuter une série de commande de façon séquentielle en tenant compte du code de retour des précédentes commandes. Deux opérateurs sont utilisables && (ET logique) et (OU logique) ayant le comportement suivant : commande1 && commande2 : la deuxième commande est uniquement exécutée si la première commande renvoie un code de retour à vrai (donc 0) et l expression globale renvoie vrai si toutes les commandes ont renvoyé un code de retour à vrai, commande1 commande2 : la deuxième commande est uniquement exécutée si la première commande renvoie un code de retour à faux (donc >0) et l expression globale renvoie vrai si au moins l une des commande a renvoyé un code de retour à vrai. Question 1 En utilisant les opérateurs décrits ci-dessus, donnez la commande permettant d afficher le contenu du fichier /etc/passwd si vous avez pu créer un fichier test.txt dans le répertoire /etc. Même question mais dans le cas où vous n avez pu créer le fichier test.txt affiche le contenu du fichier /etc/passwd. EXERCICE 4 Dans cet exercice, nous allons utiliser la commande test avec la structure de contrôle if afin de tester si une condition logique est respectée ou non, comme suit : if commande1 then commande2 commande3 else commande4 commande5 fi Dans le cas où la commande test (ou plus généralement une commande) en paramètre de if est vrai (c est-à-dire $? vaut 0) alors les commandes situées après le then sont exécutées, 4

sinon ce sont les commandes après le else qui le seront (le bloque else n est pas obligatoire). Question 1 Donnez un script qui test le nombre d arguments passé au lancement du script. Si au moins un argument a été fournit alors le script affiche la liste des arguments, sinon un message d erreur est retourné. Question 2 Donnez un script qui test si un fichier passé en argument possède les droit d exécution, si c est le cas alors le fichier est exécuté sinon le droit en exécution est ajouté avant d exécuter le fichier. Vous testerez un nom de fichier est passé en argument du script. Lorsqu'il est nécessaire de comparer le contenu d'une variable avec différentes valeurs, il est possible d'utiliser la structure contrôle case qui permet de remplacer une suite de bloc if else. Celle-ci s'utilise la manière suivante : case $var in val1) commande ;; val2) commande ;; val3 val4 val5) commande ;; esac Le shell évalue le contenu de la variable avec les différentes valeurs indiquées de haut en bas, si il y a égalité alors les commandes relatives à cette valeur sont exécutées. Les caractères ;; représentent la fin du traitement et permettent de sortir du case. La prochaine commande exécutée est celle après esac. Il est possible d'indiquer une suite d'alternatives de valeurs associées au même bloc de commandes à exécuter, pour cela il faut utiliser le symbole entre les valeurs. Question 3 Donnez un script qui utilisant un case permettant d'afficher le menu suivant : 1 Afficher login 2 Afficher pwd 3 Fin puis en fonction du nombre entré par l'utilisateur, le script affiche l'information choisie. EXERCICE 5 Le shell permet de réaliser des calculs sur des nombres, pour cela chaque expression arithmétique doit être entourée par les symboles suivants (( et )). Le tableau suivant liste les principaux opérateurs utilisables : nb1 + nb2 nb1 - nb2 nb1 * nb2 Opérateurs Description Addition Soustraction Multiplication 5

nb1 / nb2 nb1 % nb2 nb1 = expression Division Modulo Affectation Question 1 Donnez la suite des commandes pour créer une variable x en lui affectant la valeur 10, puis doubler son contenu et afficher sa nouvelle valeur. Question 2 Donnez un script qui prend en paramètre un entier x, calcul x^3 et affiche le résultat du calcul. 6