TRAVAUX PRATIQUES 5 Scripts avancés sous Linux



Documents pareils
Environnements informatiques

Programme awk------introduction rapide

TP 1. Prise en main du langage Python

Le prototype de la fonction main()

STAGE IREM 0- Premiers pas en Python

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)

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

1. Structure d'un programme FORTRAN 95

sshgate Patrick Guiran Chef de projet support

TP1 - Prise en main de l environnement Unix.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

TP, première séquence d exercices.

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

Bases de programmation. Cours 5. Structurer les données

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

ACTIVITÉ DE PROGRAMMATION

Examen Médian - 1 heure 30

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Algorithmique et Programmation, IMA

TRIGONOMETRIE Algorithme : mesure principale

TP1 : Initiation à l algorithmique (1 séance)

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Initiation à la programmation en Python

TP 1 Prise en main de l environnement Unix

Introduction à MATLAB R

Introduction à l algorithmique et à la programmation M1102 CM n 3

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

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


Corrigé des TD 1 à 5

Cours Informatique Master STEP

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

Licence Sciences et Technologies Examen janvier 2010

Initiation à l algorithmique

TP 4 de familiarisation avec Unix

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours d algorithmique pour la classe de 2nde

Introduction aux Systèmes et aux Réseaux

Introduction au langage C

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

Les structures. Chapitre 3

SSH. Romain Vimont. 7 juin Ubuntu-Party

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

Python Les fondamentaux du langage

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

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

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

4. Groupement d objets

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

AWS avancé. Surveiller votre utilisation d EC2

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

Direction des Systèmes d'information

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Représentation d un entier en base b

Cours 14 Les fichiers

Nouvelle version de Zonecheck, la 3.0, avec tests DNSSEC

1 Lecture de fichiers


Programmation Web. Madalina Croitoru IUT Montpellier

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

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Java Licence Professionnelle CISII,

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

Nous avons utilisé plusieurs Script :

Cours Programmation Système

Programmation système en C/C++

Gestion mémoire et Représentation intermédiaire

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Outils pour la pratique

PowerShell. Référence. Windows. Tyson Kopczynski. Réseaux et télécom. Programmation. Génie logiciel. Sécurité. Système d exploitation

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Configurer la supervision pour une base MS SQL Server Viadéis Services

Les clients GNU/Linux

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

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

INFO-F-404 : Techniques avancées de systèmes d exploitation

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

Projet de programmation (IK3) : TP n 1 Correction

L informatique en BCPST

Organigramme / Algorigramme Dossier élève 1 SI

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

TP1. Outils Java Eléments de correction

1 Démarrage de Marionnet

Le logiciel Netkit Installation et utilisation

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

Cours d initiation à la programmation en C++ Johann Cuenin

TP Administration Oracle

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

Langage Java. Classe de première SI

Chapitre 4 : Édition de fichiers texte - Vi

Compilation (INF 564)

L exclusion mutuelle distribuée

Présentation du langage et premières fonctions

Transcription:

TRAVAUX PRATIQUES 5 Scripts avancés sous Linux L objectif de ce TP est de continuer à 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 décrites dans l énoncé. Dans la suite, le prompt du terminal sera symbolisé par «$>». EXERCICE 1 Dans cet exercice, nous allons nous intéresser aux boucles qui sont des structures de contrôle permettant de répéter l exécution d une suite de. Parmi ces structures, deux types de boucle sont majoritairement utilisées : la boucle while et la boucle for. Boucle while La boucle while (signifiant «tant que» en anglais) exécute une suite de en répétition qu une condition réussie, c est-à-dire a un code de retour vrai (code 0). La syntaxe de ce type de boucles est la suivante : while condition Les lignes entre les instructions et (appelé «corps de la boucle») seront exécutées tant que condition (réalisée avec la commande test par exemple) retourne un code de retour vrai (code égale à 0). Après exécution du corps de la boucle condition est à nouveau testée, si elle renvoie faux alors le shell exécute la commande située après dans le script. Question 1 Réalisez un script prenant en argument un entier supérieur à 0 et créant autant de fichier qu indiqué nt les noms sont construit comme suit : f1, f2, num=1 limite=$1 while test $num!= $limite touch f"$num" 1

((num = $num + 1)) Boucle infinie Il est possible de réaliser une répétition infinie d une suite de à l aide d une boucle infinie. Pour cela, il faut utiliser les spéciales : et true qui renvoie toujours vrai. Ainsi, utilisée avec une boucle while cela permet d exécuter à l infinie le corps de la boucle. La syntaxe d une boucle infinie avec la commande «:» est la suivante : while : La syntaxe d une boucle infinie avec la commande «true» est la suivante : while true Question 2 Réalisez un script affichant à l infinie le message suivant sur le terminal : «Ceci ne it jamais etre reproduit!». Quelle procédure allez-vous suivre pour arrêter l exécution de ce script? while true Echo "Ceci ne it jamais etre reproduit!" Pour arrêter ce script il est nécessaire d utiliser la commande ps -u user pour récupérer le pid du processus exécutant le script, et utiliser ce pid avec la commande kill -9 PID pour détruire le processus. Boucle for La boucle for (signifiant «pour» en anglais) affecte successivement à chaque répétition une variable var avec l une des valeurs compris dans une liste de valeurs val1 val2 valn. Le corps de boucle (lignes entre les instructions et ) est exécuté à chaque fois en considérant le contenu de la variable var. La liste de valeurs peut être fournie directement dans le script, fournie en argument du script, générée par une commande ou par substitution de caractères spéciaux du shell. La syntaxe de ce type de boucles avec une liste de valeurs fournies : for var in val1 val2 val3 2

La syntaxe de ce type de boucles avec une liste de valeurs fournie en argument du script : for var in $* La syntaxe avec une liste de valeurs générée par substitution d une commande : for var in 'commande' La syntaxe avec une liste de valeurs générée par substitution de caractères de génération de noms de fichiers : for var in *.txt Question 3 Réalisez le script demandé à la Question 1 mais à l aide d une boucle for au lieu d une boucle while. for num in `seq 1 50` touch f"$num" Question 4 Réalisez un script stockant dans un fichier de nom log_proc.txt la liste des processus associés à une liste d utilisateurs indiquée en argument du script lors de son lancement. Dans le cas où le nombre de processus récupérés avec la commande ps est nul, vous indiquerez par un message qu il n y aucun processus pour l utilisateur considéré. for user in $* procs=$( ps -u $user ) nbprocs=$( $procs wc -l ) 3

echo "Processus utilisateur $user :" >> log_proc.txt if test $nbprocs -eq 0 then echo "$procs" >> log_proc.txt else echo "Aucun processus pour l'utilisateur $user" >> log_proc.txt fi Question 5 Réalisez un script prenant en argument lors de son lancement deux noms de fichiers. Le premier argument est un fichier texte nt le contenu de chaque ligne est lu et écrit dans le fichier nt le nom correspond au second argument en ajoutant en début de ligne le numéro de la ligne dans le fichier. numline=1; for line in $( cat $1 ) echo "$numline : $line" >> $2 ((numline = $numline + 1)) Pour la suite, nous allons utiliser une commande appelée awk (du nom de ses auteurs Aho, Weinberger et Kernighan) qui permet de réaliser des traitements sur des fichiers textes. Voici ci-dessous la syntaxe associée à cette commande : awk [-F] '{action-awk}' [ fic1 ficn ] Cette commande prend en argument une liste d fichiers à traiter, si aucun fichier n est fournit alors les nnées fournit sur l entrée standard sont considérées. Cette commande possède son propre langage pour définir les actions à réaliser pour chaque enregistrement issu des fichiers en entrées. Par défaut, un enregistrement correspond à une ligne d un fichier. Chaque enregistrement fournit en entrée est automatiquement découpé en champs et un certain nombre de variables internes à awk sont initialisées. Le tableau ci-dessous liste certaines de ces variables : Nom de la variable Description de la variable $0 Valeur de l enregistrement courant NF Number of Field : nombre de champs de l enregistrement courant $1 $2 $NF $1 contient la valeur du premier champ, $2 la valeur du deuxième champ, $NF la valeur du dernier champ de l enregistrement courant 4

NR FNR FILENAME Number : indice de l enregistrement courant (NR vaut 1 pour la première ligne) File Number : indice de l enregistrement courant relatif au fichier en cours de traitement Nom du fichier en cours de traitement Voici ci-dessous un exemple d utilisation de la commande awk : ps -ef awk '{print "User : ", $1, "Command : ", $8}' awk travaille sur le résultat fournit par la commande ps. Ici, awk exécute le traitement contenu entre les accolades «{ }», et les quotes spécifie au shell de ne pas interpréter ce qui est situé entre elles. La fonction print va afficher à l écran les champs 1 et 8 de chaque ligne fournit par la commande ps (ici le propriétaire et le nom de chaque processus). Il est possible de modifier le séparateur de champs considéré par awk à l aide de l option -F (par exemple -F' ' considérera le symbole pour déterminer le découpage des champs de chaque ligne passé en entrée). Comme indiqué plus précédemment un langage spécifique à cette commande est défini. Ainsi, il est possible d appliquer une action si une certaine condition est sur l enregistrement est vérifiée. Voici ci-dessous un tableau des principaux opérateurs de tests : Opérateur Description < Inférieur > Supérieur <= Inférieur ou égal >= Supérieur ou égal == Test d égalité!= Test d inégalité ~ Correspondance avec une expression régulière!~ Non correspondance avec une expression régulière! Négation && ET logique OU logique (expression) Regroupement L exemple ci-dessous n applique l action d affichage sur le résultat de la commande ps uniquement pour le deuxième enregistrement et si la commande n est une commande bash : ps -ef awk 'NR == 2 && $8!= "bash" {print "User : ", $1, "Command : ", $8}' Question 6 Réalisez un script listant le contenu du répertoire courant et affichant le nom et la taille du fichier le plus volumineux contenu dans le répertoire courant. 5

nomfmax="" taillefmax=0 for fichier in $( ls ) nom=$( ls -l $fichier awk '{print $9}' ) taille=$( ls -l $fichier awk '{print $5}' ) if test $taille -gt $taillefmax then nomfmax=$nom taillefmax=taille fi echo "Le fichier $nomfmax est le plus volumineux du repertoire courant avec un taille de $taillefmax octets." 6