Vous êtes sur la page 1sur 2

Corbeille d’exercices : scripting Linux

1. TEXTE DU PROSIT
Cette corbeille d’exercices a pour objectif de vous faire manipuler diverses commandes bash.
La plupart des tâches demandées ici sont réalisables avec la commande find. Afin de vous
permettre d’explorer au mieux les possibilités des scripts shell, je vous propose de réaliser cet
exercice sans utiliser ladite commande.

Pour cela, commencez par exécuter la commande suivante :

root@debian-server:~# chmod –x /usr/bin/find


***

Vous venez de récupérer un très vieux PC et vous souhaiteriez vous en servir pour faire tourner un
serveur Linux : serveur web et serveur DNS principalement. Le principal inconvénient de ce dernier
est son espace disque ; il va falloir être très vigilent :

root@debian-server:~# df -kh
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
/dev/sda1 912M 694M 218M 76% /
La première chose qui vous vient à l’esprit est une gestion intelligente des fichiers de log. Afin de ne
pas configurer chaque service indépendamment, vous avez décidé de créer un script shell qui
s’exécutera tous les jours et qui sauvegardera tous les logs d’une taille supérieure à 5 Kio sur une clé
USB. L’arborescence du répertoire /var/log sera bien entendu conservée.

Admettons, le temps de ce workshop, que la clé USB est montée sur /media/backup. Il faudra tout de
même vérifier que la clé est bien montée au lancement du script.

Sur la clé USB, chaque sauvegarde sera conservée dans un répertoire portant comme nom la date du
jour de la sauvegarde. Il sera plus facile de retrouver les fichiers correspondant à un jour donné.

1. Création du script

Créez le script à l’emplacement que vous souhaitez. Donnez la possibilité d’exécuter le fichier à son
propriétaire (root). Le script utilisera bash comme shell d’exécution.

2. Vérification du montage de la clé USB

Admettons pour ce workshop que la partition de la clé USB correspond au système de fichiers
/dev/sdb1. La commande suivante renvoie 1 si la clé USB est correctement montée, 0 sinon :

# df | grep sdb1.*/media/backup | wc -l
Rédigez le code permettant de vérifier si la clé USB est correctement montée. Si ce n’est pas le cas,
le script renvoi un message d’erreur.

3. Lister tous les fichiers de log de taille supérieure à 5 Kio

Afin d’avancer progressivement, le script va commencer par lister tous les fichiers de log présent dans
le répertoire /var/log dont la taille est supérieure à 5 Kio. Pour le moment, il n’est pas utile de lister les
fichiers présents dans les sous-dossiers du répertoire /var/log, ils seront donc ignorés.

4. Déplacer les fichiers vers la clé USB

Au lieu d’afficher les fichiers, vous allez les déplacer vers la clé USB. Le fichier sera vidé dans le
répertoire /var/log et copié dans un dossier à la date du jour sur /media/backup.

5. Création d’une fonction réalisant la copie


Corbeille d’exercices : scripting Linux

Vous allez mettre la boucle for au sein d’une fonction. En effet, cela va vous permettre d’appeler de
manière récursive cette fonction et ainsi permettre de copier des fichiers de log contenus dans des
dossiers eux-mêmes contenus dans des dossiers. Cette fonction prendra deux paramètres : le
premier sera le répertoire de log, le second sera le répertoire de sauvegarde.

6. Prise en compte des répertoires

Ajoutez à votre fonction la prise en compte des répertoires. Celle-ci s’appellera dès qu’elle rencontrera
un dossier et passera en paramètre le dossier correspondant et créera un nouveau répertoire de
sauvegarde sur la clé USB.

7. Lancement automatique quotidien

Le script devra être lancé quotidiennement et automatiquement. Vous devez donc configurer votre
système pour permettre cette exécution automatique.

8. Pour aller plus loin

Le script fait le travail attendu. Si vous avez déjà fini, vous pouvez ajouter les fonctionnalités
suivantes :

- Création d’un fichier de log à l’aide de la commande logsave : vous écrirez les erreurs et le
comportement du script dans le fichier save_log.log ;
- Passer en paramètre le système de fichiers de la clé USB qui sera montée puis démontée par
le script ;
- Et tout ce qui vous passera par la tête.

Vous aimerez peut-être aussi