Examen de TP Introduction aux systèmes d exploitation Durée : 3h



Documents pareils
Environnements informatiques

Introduction aux Systèmes et aux Réseaux

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

TP1 - Prise en main de l environnement Unix.

TP 1 Prise en main de l environnement Unix

Sauvegarde sous MAC avec serveur Samba

TP 1. Prise en main du langage Python

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

Projet Administration Réseaux

Le prototype de la fonction main()

Boîte électronique. Découverte des principales fonctions d une messagerie électronique. (et les pièces jointes)

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

La photo numérique et les logiciels libres. Asie Photos

1 Démarrage de Marionnet

Propagation sur réseau statique et dynamique

Algorithmique et Programmation, IMA

TP Administration Oracle

C.M. 1 & 2 : Prise en main de Linux

Université de La Rochelle Linux utilisateur SUDEF. Linux Utilisateur. Session du 27 juin au 1er juillet 2005

Exercice sur les Dockers

1 Recherche en table par balayage

1. Structure d'un programme FORTRAN 95

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Licence Sciences et Technologies Examen janvier 2010

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

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)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

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

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

TP JAVASCRIPT OMI4 TP5 SRC

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

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

1 Lecture de fichiers

Solutions du chapitre 4

Cours de Systèmes d Exploitation

Chapitre 02. Gestion de l'information

Installation d ORACLE 10g sous Debian Etch

Module http MMS AllMySMS.com Manuel d intégration

TP 1 : prise en main de Windows. TP 1 : prise en main de Windows

HYPERDRIVE iusbport Guide d utilisation

Gestion de stock pour un magasin

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

TRIGONOMETRIE Algorithme : mesure principale

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

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

Bon ben voilà c est fait!

Première partie. Qu est-ce qu un script?

Mise en place d un serveur Proxy sous Ubuntu / Debian

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

Les clients GNU/Linux

Mysql avec EasyPhp. 1 er mars 2006

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

Premiers pas en Linux

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Cours Microfer Chartres

Le langage C. Séance n 4

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

pas à pas prise en main du service sur le web Le Cloud

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

Utilisation d une tablette numérique

Installer un domaine DNS

Comment faire pour créer ses propres pages html?

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

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

TP3 : Manipulation et implantation de systèmes de fichiers 1

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

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

TP, première séquence d exercices.

Système formé de deux points

Introduction à l Administration Systèmes et Réseaux

CONFIGURATION DU SERVEUR DE MAILS EXIM. par. G.Haberer, A.Peuch, P.Saade

Cours 14 Les fichiers

TP 4 de familiarisation avec Unix

MIS 102 Initiation à l Informatique

Algorithmique et programmation : les bases (VBA) Corrigé

Client windows Nagios Event Log

Calcul Formel et Numérique, Partie I

Programmation système en C/C++

Année Universitaire ième année IMAC Mardi 6 janvier Cloud computing Travaux Pratiques

PROXY SQUID-SQARD. procédure

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Manuel v. 6sV Simplement surfer. Simplement cliquer. Simplement bloguer.

Logiciel DELF-DALF - Mise à jour vers la version (septembre 2014)

Banque d images SVT. Créer et utiliser une banque d images avec Picasa 2. Version anglaise -Windows 98. Banque photo en SVT : page 1 /14

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

MANIPULATION DE LA TABLE DE ROUTAGE IP. par. G.Haberer, A.Peuch, P.Saadé

Stage ECG1502 S'approprier l'utilisation d'une plateforme collaborative.

BONNE NOUVELLE, À PARTIR DE DEMAIN 15 AOÛT 2014, l inscription en ligne sera disponible à partir du site de l ARO.

2 Formation utilisateur

Dans le monde de l entreprise, le

SCM Fournisseurs de services et délégués Matériel de formation à l intention des utilisateurs Nouveau-Brunswick, Canada

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

Manuel de l utilisateur

PHP 4 PARTIE : BASE DE DONNEES

Configuration de la Borne Interactive

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

Ceci est un Chromebook, ton ordinateur!

EN BLANC AVANT IMPRESSION»»»

Transcription:

Université Paris-Est Créteil Énoncés L3 SPI parcours Électronique session déc. 2015 Examen de TP Introduction aux systèmes d exploitation Durée : 3h Documents et notes de cours autorisés. Ne répondez pas à plusieurs questions en même temps ; respectez le découpage de l énoncé, sous peine de nullité. Certaines questions sont plus faciles que d autres, lisez bien l énoncé avant de commencer. Gestion de photos et vidéos en bash On se propose d écrire un script bash gererphotos.sh qui permet de gérer des répertoires contenant des photos (chiers d extension.jpg) et des vidéos (.mp4). Au départ, on suppose que l on a des photos et des vidéos, regroupées par jour dans un certain nombre de répertoires "$SOURCE/annee_mois_jour/" où $SOURCE est par défaut "$HOME/Images/" et année, mois et jour sont nnés sur respectivement 4, 2 et 2 chiffres (exemple : 2015_04_25). De plus, chaque nom de chier contenu dans l un de ces répertoires est unique. Le but du script est de déplacer les chiers en les regroupant par mois et non par jour, et de séparer les photos des vidéos. Ainsi, la destination d un chier photo (respectivement vidéo) initialement situé dans le répertoire "$SOURCE/annee_mois_jour/" sera le répertoire "$PHOTOS/annee_mois/" (respectivement "$VIDEOS/annee_mois/"). Par défaut, $PHOTOS est "$HOME/Photos/", $VIDEOS est "$HOME/Videos/". Exercice 1 (1 point) Écrire une fonction afcherusage qui afche l usage du script sous la forme suivante : USAGE:./gererphotos.sh [options] Options : -help : afche cette aide -src rep : change répertoire source -dp rep : change répertoire cible des photos -dv rep : change répertoire cible des vidéos Exercice 2 (2 points) Écrire une fonction testerarguments qui reçoit deux entiers en argument. Si le premier argument est numériquement plus petit que le second, la fonction afche "Argument manquant" sur la sortie d erreur, puis termine le script en échec en retournant 1. Exercice 3 (3 points) Écrire la première partie du programme principal, qui initialise les trois variables SOURCE, PHOTOS et VIDEOS à leur valeur par défaut (voir début de l énoncé), puis analyse la ligne de commande (voir usage dans l exercice 1). Selon les options rencontrées, soit on afche l usage et on termine le script en succès, soit on modie l une ou l autre des trois variables (dans ce cas on vérie avec testerarguments qu il y a au moins deux arguments). Si l option est inconnue, on afche un message d erreur et on termine le script en échec. Les options peuvent apparaitre dans un ordre quelconque, voire plusieurs fois. Exercice 4 (2 points) Écrire une fonction creerrepertoire qui reçoit un nom de répertoire en argument. Si ce répertoire existe, la fonction ne fait rien, sinon elle afche son intention de créer le répertoire, puis le crée. Si cette création échoue, elle afche un message d erreur et termine le script en échec en retournant 1. 1

Exercice 5 (2 points) Écrire une fonction extrairedeligne qui ne reçoit pas d arguments, mais lit trois mots dans une ligne sur l entrée standard. Si les trois mots sont tous non vides, la fonction afche sur une seule ligne le mot 1 puis le caractère "_" puis le mot 2, sinon la fonction afche une ligne vide. Exercice 6 (2 points) Écrire une fonction extraireduchemin qui reçoit en argument un chemin de répertoire sous la forme "chemin/annee_mois_jour" puis afche sur la sortie standard "annee_mois" (sinon afche une ligne vide). Une solution consiste à extraire le nom du sous-répertoire avec la commande basename, puis de transformer les "_" en " " (espace) avec la commande tr, pour enn appeler extrairedeligne. On rappelle que la commande basename prend un chemin en argument puis afche le nom du chier ou sous-répertoire dans ce chemin. Par exemple, basename /usr/local/bin afche bin. Exercice 7 (4 points) Écrire une fonction rangerrepertoire qui reçoit en premier argument le chemin d un répertoire source, de la forme "chemin/annee_mois_jour", et en deuxième argument le sous-répertoire destination de la forme "annee_mois". La fonction itère sur chaque chier du répertoire source. Si le chier courant n est pas un chier régulier, on va à la prochaine itération. Selon l extension du chier, on le déplace dans le répertoire "$PHOTOS/annee_mois/" ou "$VIDEOS/annee_mois/" ou sinon on va à la prochaine itération. Avant de déplacer un chier dans un répertoire, on appelle creerrepertoire pour éventuellement le créer, puis on afche le chemin source et le chemin destination du chier pour informer l utilisateur. Si un déplacement échoue, on ignore l erreur. Exercice 8 (2 points) Écrire une fonction gestiondesreps qui ne reçoit pas d argument. La fonction itère sur chaque sousrépertoire de $SOURCE, calcule le nom du sous-répertoire cible avec extraireduchemin, puis si le résultat est non vide, range le contenu du sous-répertoire courant dans les répertoires cibles correspondants avec rangerrepertoire. Exercice 9 (2 points) Écrire la seconde partie du programme principal : si le répertoire $SOURCE n existe pas, on afche un message d erreur et on termine le script en échec ; on crée éventuellement les répertoires $PHOTOS et $VIDEOS avec creerrepertoire ; enn on range les photos et vidéos avec gestiondesreps. 2

Université Paris-Est Créteil Corrections L3 SPI parcours Électronique session déc. 2015 Examen de TP Introduction aux systèmes d exploitation Durée : 3h Correction 1 afcherusage () echo "USAGE: $0 [options]" echo "Options : -help : afche cette aide" echo " -src rep : change répertoire source" echo " -dp rep : change répertoire cible des photos" echo " -dv rep : change répertoire cible des vidéos" Correction 2 testerargument () if [ "$1" -lt "$2" ]; echo "Argument manquant" 1>&2 Correction 3 #! /bin/bash # Analyse ligne de commande SOURCE="$HOME/Images" PHOTOS="$HOME/Photos" VIDEOS="$HOME/Videos" while [ $# -gt 0 ] case "$1" in -help) afcherusage ; exit 0 ;; -src) testerarguments $# 2 ; SOURCE="$2" ; shift 2 ;; -dp) testerarguments $# 2 ; PHOTOS="$2" ; shift 2 ;; -dv) testerarguments $# 2 ; VIDEOS="$2" ; shift 2 ;; *) echo "ERREUR de syntaxe" 1>&2 ; exit 0 ;; esac 1

Correction 4 creerrepertoire () if [! -d "$1" ] echo "Création répertoire \"$1\"..." if [! mkdir "$1" ] echo "Echec création répertoire \"$1\"" 1>&2 Correction 5 extrairedeligne () read a m j if [ "$a" = "" -o "$m" = "" -o "$j" = "" ] echo "" else echo "$a_$m" # on protège $a de $a_ avec Correction 6 extraireduchemin () basename "$1" tr _ " " extrairedeligne Correction 7 rangerrepertoire () for f in "$1"/* # Est-ce un chier? if [! -f "$f" ]; continue ; case "$f" in *.jpg) d="$photos" ;; *.mp4) d="$videos" ;; *) continue ;; esac creerrepertoire "$d/$2" b=$(basename "$f") g="$d/$2/$b" 2

echo "\"$f\" --> \"$g\"" mv "$f" "$g" Correction 8 gestiondesreps () for rep in "$SOURCE"/* # Est-ce un répertoire? if [! -d "$rep" ]; continue ; # calcul répertoire cible d=$(extraireduchemin "$rep") if [ "$d" = "" ]; continue ; rangerrepertoire "$rep" "$d" Correction 9 # Existence de RepSrc if [! -d "$SOURCE" ] echo "Erreur, répertoire source inexistant" 1>&2 # Création éventuelle des répertoires creerrepertoire "$PHOTOS" creerrepertoire "$VIDEOS" # Déplacement photos et videos gestiondesreps exit 0 3