Skip to content

Exercices : Scripts Shell

Scripts de base

Créez un répertoire scripts, dans lequel vous rangerez vos scripts

Ex 1 : Créez un script Ex1 qui vous demande votre nom et votre prénom, et vous

affiche \'vous êtes prénom nom\'

Ex 2 : Créez un script Ex2 qui vous demande votre nom et prénom (en une seule

variable), puis votre mois de naissance et enfin votre année de naissance. Il

affiche ensuite \"Nom : xxxxx, né(e) en xx xxxx\" suivi du calendrier de ce mois

Ex 3 : Écrire un script non interactif Ex3 qui crée un fichier /tmp/bilan, qui contient la date, le nom de la machine (uname ­a), la liste des utilisateurs connectés, et la liste des processus. Vérifiez le bon fonctionnement de votre script.

Ex 4 : écrire un script non interactif qui affiche :

Nb users connectés : xx

Nb de processus : xxx

Ex 5 : Ecrire un script qui vous demande un nom d\'utilisateur, puis affiche les processus qui lui appartiennent

Ex 6 : Ecrire un script qui crée dans /tmp un fichier qui contient le lastlog du jour.

Ex 7 : Améliorez le script précedent en faisant en sorte que le nom du fichier soit SAV­AA­MM­JJ (SAV suivi de la date du jour, calculée automatiquement)

Conditions et tests

Ex 1 :  Écrire un script qui liste son nom et ses arguments (grâce à echo), et

affiche le total d\'arguments

Ex2  : Écrire un script qui rend exécutable le fichier dont le nom est passé en

argument (pratique pour les scripts, justement)

Ex3 : Améliorez le script précédent, afin qu\'il vérifie si le fichier existe bien. Il

doit aussi indiquer si celui­-ci était déjà exécutable.

Ex4 : En cas de mauvaise invocation (oubli de l\'argument, trop d\'arguments), affichez

l\'usage  de  votre  programme à l\'écran

usage  :  monprog un_script_à_rendre_exécutable

file est une commande qui vous indique quel est le type d\'un fichier (man file).

Ex5 : Améliorez encore le programme précédent afin qu\'il vérifie si l\'argument qu\'on lui passe est bien un script shell.

Ajoutez à votre programme la possibilité d\'interroger son numéro de version,

grâce à un argument ­v (par exemple : monprog ­v affiche Monprog, version

0.17, date : 17/03/2013, auteur : ND)

Ex 6 : Écrire une commande qui vérifie si le processus qu\'on lui donne en

argument est présent en mémoire.

Testez ce programme : Un problème apparaît lorsque l\'on demande un processus dont le nom n\'existe pas. Vérifiez

pourquoi.

Modifiez votre script afin qui ne se trompe plus (utilisez grep -v).

Ex 7 : écrire une commande qui vérifie si le user dont on lui passe le nom en

argument  est  bien  connecté,  et  affiche  aussi  son  nom  complet  (dans

/etc/passwd, 5ème champ)

Ex8 : écrire un programme qui ping monge.univ­mlv.fr. Si celui­ci répond,

affichez \'monge répond\', sinon affichez  \'monge ne répond pas\'. Ces deux seuls

messages doivent apparaître.

Boucles :

Ex 1 : Récupérez le fichier access.log de mon site. Ce fichier est le log officiel

d\'apache, et contient toutes les informations demandées par les utilisateurs. Il

est utilisé pour faire des statistiques sur les visites du site.

Écrivez un script qui sort le nombre de hits pour le répertoire images pour

plusieurs jours (comptez les hits du premier jour et affichez les, puis ceux du

second jour et affichez les, etc..). (vous pouvez donner les dates en  « dur ».

Cependant, il est possible d\'avoir la liste de tous les jours présents.. puis, pour

chacun d\'eux, compter le nombre d\'accès au répertoire images)

Ex 2 : amélioration du précédent, mais le nom du répertoire recherché est passé

en paramètre par l\'utilisateur.

Ex 3 : A quoi sert la commande seq ? Comment pourriez vous l\'utiliser dans une

boucle ? Ecrire un programme qui ping toutes les machines de 192.168.4.130 à

192.168.4.140.