TD Shell : fonctions, regexp, grep

Objectifs du TD :  scripts shell simples, fonctions, commande grep et expressions rationnelles, structures de contrôle

Exercice 1: grep, expression rationnelles communes et expansion de noms de fichiers

  1. écrire un script qui indique si une personne (dont le nom sera fourni en argument à votre script) est connectée sur votre poste
  2. On vous demande de vérifier la forme Les login des étudiants. Ils ont, en général, la forme suivante: mentionNiveau-numero avec niveau valant l1, l2, l3, m1 et m2. Exemple: infol3-01. combien y a-t-il de comptes d'étudiants de l3 ? (getent passwd permet d'obtenir la liste des comptes utilisateurs du domaine)
  3. Comment obtenir la liste des étudiants de l3 appartenant au groupe 513 ? (on pourra faire un "man 5 passwd" pour obtenir de l'aide sur la structure de fichier contenant la liste des utilisateurs)
  4. écrire un script nommé chercheLogin.sh qui affiche le login d'un utilisateur dont on fournit l'uid en argument du script
  5. Quelle commande (et avec quels paramètres) permet obtenir la liste des fichiers du dossier courantdont le nom fini par le caractère 4,
  6. même question pour ceux dont dont le nom ne contient aucun chiffre,
  7. même question pour ceux dont le nom commence par result et contient moins de 8 caractères

Exercice 2: analyse simple de journaux systèmes

Les questions de cet exercice portent sur le fichier de log suivant que vous décompressere avant utilisation .
  1. combien de lignes comporte le fichier
  2. que fait la commande : grep -o -E 'SRC=[0-9\.]*[^0-9\.]' kern.log |cut -d = -f 2 |sort |uniq
  3. obtient-on le mêm résultat avec la commande : grep -o -E 'SRC=[0-9\.]*[^0-9\.]' kern.log |cut -d = -f 2 | uniq (expliquez)
  4. qu'apporterait l'option -c de uniq ?
  5. Combien de fois apparaît chaque couple SRC/DST ?
  6. donnez le top 20 de ces couuples (i.-e. les 20 qui apparaissent le plus).
  7. à combien de machine différentes s'est connecté la machine 192.168.120.52 en tant que machine SRC ?
  8. pour chaque machine du réseau privé 192.168.0.0/16, donnez le nombre de machines auxquelles elle se connecte en tant que SRC
  9. à combien de machines différentes est connectée la machine 192.168.120.52 en tant que DST ?

exercice 1: fonctions, structures de contrôle simples

    exercice 3: structures de contrôle (if, for, ...)

    1. écrire un script shell qui indique pour chaque fichier du dossier courant si c'est un dossier, un fichier ordinaire ou autre chose.
    2. écrire un script qui  crée une copie de sauvegarde de chaque fichier ordinaire : la copie de sauvegarde sera dans le dossier courant et son nom sera le nom du fichier auquel on aura ajouté ".bak". Ainsi, la copie de sauvegarde du fichier toto.txt sera toto.txt.bak
    3. modifier votre script de façon à 1) ce qu'on puisse lui passer en argument le dossier sur lequel agir et 2) ce qu'il agisse récursivement sur les dossier présents dans ce dossier
    4. écrire un script sommeTaille1.sh qui affiche la taille des fichiers ordinaires dont les noms lui sont passés en paramètre puis la somme des tailles des fichiers. Exemple: "sommeTaille1.sh f1 f2 test" retourne des tailles des fichiers ordinaires f1, f2 et test puis leur somme.