:: Enseignements :: Licence ::
L1
:: 2008-2009 :: Unix ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Scripts et réseau |
Des scripts, des scripts, et un tout petit peu de réseau.
Pour écrire des scripts, nous conseillons d'utiliser un éditeur avancé tel que emacs, qui vous aidera à visualiser la syntaxe bash. Donnez-leur l'extension .sh, mettez-les dans un même répertoire ~/bin, que vous insérerez dans votre liste de répertoires d'exécution. N'oubliez pas de vous donner les droits en exécution sur les scripts. Faites-les précéder de la ligne #! /bin/bash pour spécifier l'interpréteur.
Exercice 1 - Script de sauvegarde
-
Écrivez un script sauve.sh qui copie le fichier passé en argument vers un répertoire de sauvegarde placé dans le répertoire personnel ($1).
- Faites en sorte qu'un message soit affiché en l'absence d'argument.
- Modifiez le script pour qu'on puisse lui passer un nombre arbitraire d'arguments à copier dans le répertoire de sauvegarde ($*, for).
- Modifiez le script pour qu'il vérifie au préalable que le répertoire existe, qu'il le crée sinon.
- Faites en sorte qu'il ajoute, si l'utilisateur ne l'a pas déjà, le droit en écriture sur le répertoire avant de faire la copie et qu'il l'enlève après.
- Faites en sorte qu'il teste si le fichier existe déjà dans le répertoire de sauvegarde et qu'il le sauve sous un autre nom de fichier sinon.
- Mettez en place un système de compteur pour incrémenter le nom des sauvegardes des fichiers ayant le même nom.
Exercice 2 - Scripts avancés
-
Créez un script indiquant pour chacun de ses arguments s'il
s'agit d'un fichier ou d'un répertoire.
- Écrivez un script renommant tous les fichiers .jpeg en .jpg.
- Écrivez un script affichant (récursivement) les sous-répertoires du répertoire passé en argument, ou du répertoire courant si le script est lancé sans argument.
- Écrivez un script exécutant une boucle infinie dont la seule action est d'afficher un message quand il reçoit le signal USR1 (trap).
- Écrivez-en un autre prenant le PID de ce dernier en argument et lui envoyant le signal à intervalle régulier (kill, sleep).
- Adaptez les scripts précédents pour qu'il gèrent un deuxième signal (avec un message différent).
- Écrivez un script générant une page web contenant toutes les images contenues dans un répertoire fourni en argument.
Exercice 3 - Calcul numérique
- Créez un script renvoyant n!.
- Créez un script affichant les diviseurs de n.
- Écrivez un script qui demande à l'utilisateur un nombre, lui dit si celui-ci est plus grand ou plus petit que 50, s'arrête s'il est égal, boucle sinon.
- Modifiez le script précédent pour remplacer 50 par un entier pseud-aléatoire entre 0 et 50 (construit à partir des identifiants de processus ou de la date).
Exercice 4 - Un petit peu de réseau
- Vérifiez que la machine etudiant est en vie (ping).
- Étudiez le chemin pour aller de la l'université jusqu'à Google (traceroute). Envoyez la sortie de cette commande dans des fichiers, afin de comparer les chemins à différents moments (diff sur deux colonnes).
- Le serveur FTP ftp://ftp.fu-berlin.de propose les bases de données très complètes sur le cinéma dans le répertoire misc/movies/database/. Téléchargez la plus petite (ftp, cd, ls, get).
- Imaginez que vous avez dépassé le quota alloué sur votre compte informatique à cause de l'archive précédente. Avant d'alerter le CRI, vous pouvez essayer de résoudre le problème vous-même en supprimant le fichier via une autre machine (ssh).
- Si vous vous embêtez, vous pouvez adapter au cinéma l'exercice sur la base de donnée de Flickr.
© Université de Marne-la-Vallée