Scripts shell : Défi

Exercice : Défi

Il va falloir réaliser un script Bash complet qui réalise la tâche suivante : il va écrire le message "L'utilisateur NOM_UTILISATEUR a comme UID UID_UTILISATEUR", pour chaque utilisateur existant sur la machine. NOM_UTILISATEUR et UID_UTILISATEUR seront bien entendu remplacé par le nom de l'utilisateur et son UID.

Le message en question sera écrit dans l'un des 3 fichiers différents :

  • users.txt si l'UID est compris entre 1000 et 1999 (inclus)

  • system_users.txt sur l'UI est strictement inférieur à 1000

  • other_users.txt pour les UID supérieurs ou égaux à 2000

Écrivez le script permettant de réaliser cela.

On peut trouver la liste des utilisateurs et leur UID dans le fichier /etc/passwd.

La commande cut est très utile pour extraire des informations depuis du texte ayant un format bien défini.

On créé et rend exécutable un fichier defi.sh qui va contenir notre script.

#!/bin/bash
for entry in $(cat /etc/passwd | cut -d":" -f1,3)
do
  user=$(echo "$entry" | cut -d":" -f1)
  user_id=$(echo "$entry" | cut -d":" -f2)
  if [ $user_id -ge 1000 ] && [ $user_id -lt 2000 ]
  then
    echo "L'utilisateur $user a comme UID $user_id" >> users.txt
  elif [ $user_id -lt 1000 ]
  then
    echo "L'utilisateur $user a comme UID $user_id" >> system_users.txt
  else
    echo "L'utilisateur $user a comme UID $user_id" >> other_users.txt
  fi
done

Il y a différentes manières de faire, mais celle-ci est plutôt une bonne proposition. On commence par faire une boucle for sur toutes les entrées du fichier /etc/passwd, dont l'on extrait uniquement le nom d'utilisateur et l'UID grâce à cut.

Pour chaque entrée on récupère le nom d'utilisateur et son UID dans deux variables séparées, toujours grâce à cut.

On applique ensuite une condition sur l'UID :

  • si l'UID est compris entre 1000 (inclus) et 2000 (exclus) on écrit le message à l'aide d'une redirection dans le fichier users.txt

  • si l'UID est plus petit que 1000 on écrit le message à l'aide d'une redirection dans le fichier system_users.txt

  • sinon on écrit dans other_users.txt

On prends garde à écrire à l'aide de redirections >>, et non pas >, pour ne pas écraser le contenu des fichiers à chaque écriture.

Auto-évaluation

Auto-évaluez votre capacité à répondre correctement aux questions de ce défi (sur une échelle de 1 à 4) :

  1. Je ne sais répondre à aucune question (ou presque)

  2. Je sais répondre à moins de la moitié des questions

  3. Je sais répondre à plus de la moitié des questions

  4. Je sais répondre à toutes les questions (ou presque)

Auto-évaluez votre capacité à répondre correctement aux questions de ce défi (sur une échelle de 1 à 4) :

  1. Je ne sais répondre à aucune question (ou presque)

  2. Je sais répondre à moins de la moitié des questions

  3. Je sais répondre à plus de la moitié des questions

  4. Je sais répondre à toutes les questions (ou presque)

4
Liste des raccourcis clavier

Liste des fonctions de navigation et leurs raccourcis clavier correspondant :

  • Bloc Suivant : flèche droite, flèche bas, barre espace, page suivante, touche N
  • Bloc Précédent : flèche gauche, flèche haut, retour arrière, page précédente, touche P
  • Diapositive Suivante : touche T
  • Diapositive Précédente : touche S
  • Retour accueil : touche Début
  • Menu : touche M
  • Revenir à l'accueil : touche H
  • Fermer zoom : touche Échap.