:: Enseignements :: Licence :: L1 :: 2008-2009 :: Unix ::
[LOGO]

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

  1. É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).
  2. Faites en sorte qu'un message soit affiché en l'absence d'argument.
  3. Modifiez le script pour qu'on puisse lui passer un nombre arbitraire d'arguments à copier dans le répertoire de sauvegarde ($*, for).
  4. Modifiez le script pour qu'il vérifie au préalable que le répertoire existe, qu'il le crée sinon.
  5. 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.
  6. 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.
  7. 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

  1. Créez un script indiquant pour chacun de ses arguments s'il s'agit d'un fichier ou d'un répertoire.
  2. Écrivez un script renommant tous les fichiers .jpeg en .jpg.
  3. É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.
  4. É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).
  5. Écrivez-en un autre prenant le PID de ce dernier en argument et lui envoyant le signal à intervalle régulier (kill, sleep).
  6. Adaptez les scripts précédents pour qu'il gèrent un deuxième signal (avec un message différent).
  7. É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

  1. Créez un script renvoyant n!.
  2. Créez un script affichant les diviseurs de n.
  3. É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.
  4. 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

  1. Vérifiez que la machine etudiant est en vie (ping).
  2. É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).
  3. 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).
  4. 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).
  5. Si vous vous embêtez, vous pouvez adapter au cinéma l'exercice sur la base de donnée de Flickr.