0% ont trouvé ce document utile (0 vote)
4 vues5 pages

Examen Systeme Scripting

Le document présente un examen sur le système et le scripting Bash, comprenant des exercices sur les concepts fondamentaux tels que les variables, les tableaux et les commandes. Les étudiants doivent répondre à des questions à choix multiples et créer des scripts pour manipuler des tableaux et analyser des données. L'examen est structuré en trois exercices, chacun évaluant des compétences spécifiques en scripting Bash.

Transféré par

mohamedghaithn
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues5 pages

Examen Systeme Scripting

Le document présente un examen sur le système et le scripting Bash, comprenant des exercices sur les concepts fondamentaux tels que les variables, les tableaux et les commandes. Les étudiants doivent répondre à des questions à choix multiples et créer des scripts pour manipuler des tableaux et analyser des données. L'examen est structuré en trois exercices, chacun évaluant des compétences spécifiques en scripting Bash.

Transféré par

mohamedghaithn
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ESPRIT – Honoris United Universities

Module : Système & Scripting | Session Principale – 13/03/2026


Classes : 2A2 – 2A19 | Durée : 1h30 | Nombre de pages : 7
Documents : NON | Calculatrice : NON | Internet : NON

Exercice 1 : (7 points) – Choisir la bonne réponse

1. Que vaut $0 pour le script suivant : ./[Link] arg1 arg2


A. arg1
B. [Link]
C. ./[Link]
D. 0

2. Que signifie [ $? -eq 0 ] dans un script Bash ?


A. On teste si la dernière commande a retourné zéro, donc a réussi.
B. On teste si la variable $? est vide.
C. On teste si la variable $0 est égale à 0.
D. On compare deux chaînes.

3. Quel est le rôle des back quotes dans le script suivant :


#!/bin/bash
rep=`pwd`
echo $rep
A. Déclarer une variable
B. Exécuter une commande et récupérer sa sortie
C. Mettre en commentaire
D. Tester une condition

4. Quelle est l'utilité de la commande getopts dans un script Bash ?


A. Gérer les permissions.
B. Analyser les options passées en ligne de commande.
C. Créer des variables globales.
D. Installer des paquets.

5. Quel est le résultat de la commande suivante : ./[Link] -a -b -c


#!/bin/bash
while getopts "a:bc" opt; do
case $opt in
a) echo "A=$OPTARG" ;;
b) echo "B" ;;
c) echo "C" ;;
*) echo "inconnu: $OPTARG" ;;
esac
done
A. A=
B
C
B. A=-b
C
C. argument manquant pour: a
B
C
D. Erreur fatale

6. Quel est le résultat du script suivant ?


#!/bin/bash
for i in $(seq 5 -2 2)
do
echo $(($i * 3))
done
A. 15
-6
6
B. 15
9
3
C. 9
15
D. 15
9

7. Quel est le résultat du script suivant ?


#!/bin/bash
str="Hello123World"
echo ${str//[0-9]/}
A. HelloWorld
B. 123
C. Hello123World
D. Hello World

8. Quel est le résultat du script suivant ?


#!/bin/bash
[ 5 -gt 3 -o 2 -gt 10 -a 1 -eq 1 ] && echo OK
A. N'affiche rien
B. Affiche OK
C. Erreur de syntaxe
D. Affiche deux fois OK

9. Quel est le résultat du script suivant ?


#!/bin/bash
str="linux:bash:shell"
echo ${str%:*}
A. linux
B. linux:bash
C. shell
D. bash:shell

10. Quelle commande permet d'afficher le nombre d'éléments d'un tableau nommé tab ?
A. echo ${tab[@]}
B. echo ${#tab[@]}
C. echo ${!tab[@]}
D. echo ${tab[#]}

11. Que fait ce script si on exécute ./[Link] [Link] et que [Link] existe et est vide ?
#!/bin/bash
if [ -f $1 ] && [ ! -s $1 ]; then
echo "Fichier vide"
else
echo "Fichier non vide ou inexistant"
fi
A. Affiche "Fichier vide"
B. Erreur car -s est mal utilisé
C. Ligne vide.
D. Affiche "Fichier non vide ou inexistant"

12. Quelle commande permet de supprimer uniquement le dernier élément d'un tableau nommé tab contenant
5 éléments ?
A. unset tab[4]
B. unset tab[5]
C. unset tab[-1]
D. unset tab[*]

13. Quel est le comportement exact du script suivant ?


#!/bin/bash
while true; do
read -p "Tapez un caractère clé: " c
if [ "$c" = "q" ]; then
break
fi
done
A. La boucle s'exécute une seule fois puis se termine
B. La boucle se termine si l'utilisateur saisit Q ou q
C. La boucle se répète indéfiniment sauf si l'utilisateur saisit exactement q
D. La boucle se termine dès que l'utilisateur saisit une chaîne contenant la lettre q

14. Quel est le résultat du script suivant ?


#!/bin/bash
i=1
s=0
until [ $s -gt 10 ]
do
s=$(( s + i ))
i=$(( i + 1 ))
done
echo "$i $s"
A. 4 15
B. 15 6
C. 6 15
D. 5 14

Exercice 2 : (6,5 points)


Dans cet exercice, on souhaite créer un script Bash nommé script_users.sh afin de comprendre comment déclarer,
exploiter et parcourir des tableaux, d'afficher et de filtrer des données, comme le ferait un administrateur système
dans un contexte réel.

1. Créer une fonction create_tab qui déclare un tableau nommé users contenant les 5 noms
d'utilisateurs suivants : root daemon user1 user2 user3. (0,75pt)
.................................................. {
# Définition du tableau users avec les 5 utilisateurs prédéfinis
....................................................................
# Affichage d'un message de confirmation avec le nombre d'éléments du tableau
.................. "Tableau users créé avec $..................... éléments"
}

2. Créer une fonction afficher_case qui affiche l'élément du tableau correspondant à l'indice saisi
par l'utilisateur. (1,25pt)
.................................................. {
# Demande et lecture de l'indice saisi par l'utilisateur en une seule commande
.................... "Entrez l'indice à afficher : " indice
# Vérification si l'indice est hors limites (négatif OU supérieur ou égale à la taille du
tableau)
if [ .......................... ] ......[ ....................................]; then
# Affichage d'un message d'erreur avec l'indice maximum autorisé
...................... "Indice $.................. invalide"
else
# Affichage de l'élément du tableau correspondant à l'indice saisi
echo ".................................... = .................................."
fi
}

3. Créer une fonction taille_tab qui permet d'afficher la longueur du tableau users. (0,75pt)
.................................................. {
# Affichage du nombre total d'éléments contenus dans le tableau users
........... "Nombre total d'éléments : ...................................."
}

4. Créer une fonction supprimer_case qui supprime l'élément du tableau correspondant à l'indice
saisi par l'utilisateur. (1,25pt)
.................................................. {
# Demande et lecture de l'indice à supprimer en une seule commande
.................... "Entrez l'indice à supprimer : " indice
# Vérification si l'indice est hors limites (négatif OU supérieur ou égale à la taille du
tableau)
if [ .......................... ]......[ ....................................]; then
# Affichage d'un message d'erreur avec l'indice maximum autorisé
...................... "Indice $.................. invalide"
else
# Affichage de l'élément qui va être supprimé
echo "Suppression de ................... = ............................."
# Suppression de l'élément du tableau à l'indice spécifié
.......................... users[$............................................]
fi
}

5. Créer une fonction afficher_tab qui affiche tous les éléments du tableau. (0,75pt)
.................................................. {
# Parcours de tous les indices du tableau users
for i in "..................................." ; ..............
# Affichage de chaque élément avec son indice correspondant
................................ "[$i] = ...................................."
..........................
}

6. Compléter ce code afin de créer le menu interactif de la figure suivante en utilisant la commande
interne select pour choisir l'une des fonctions créées dans les questions précédentes. (1,75pt)
le menu:
1) Créer tableau 3) Taille tableau 5) Afficher tableau
2) Afficher case 4) Supprimer case 6) Quitter
Choisissez une option : 1
Tableau users créé avec 5 éléments
Choisissez une option : 2
Entrez l'indice à afficher : 2
users[2] = user1
Choisissez une option : 5
[0] = root
[1] = daemon
[2] = user1
[3] = user2
[4] = user3
Choisissez une option : 3
Nombre total d'éléments : 5
Choisissez une option :

...................................................................................
....................="Choisissez une option :"
...................... "Créer tableau" "Afficher case" "Taille tableau" "Supprimer case"
"Afficher tableau" "Quitter"
do
# Traitement du choix de l'utilisateur
case .................................................
1) .............................................. # Appel de la fonction create_tab
2) .............................................. # Appel de la fonction affiche_case
3) .............................................. # Appel de la fonction taille_tab
4) .............................................. # Appel de la fonction supprimer_case
5) .............................................. # Appel de la fonction affiche_tab
6) .............................................. # Quitter le menu
*) echo "Choix invalide" ;; # Option non reconnue
....................
....................

Exercice 3 : (6,5 points)


Dans les systèmes Linux, le fichier /etc/passwd constitue une source essentielle d'informations sur les comptes
utilisateurs. Sa maîtrise permet aux administrateurs système d'effectuer des opérations d'analyse, de filtrage et de
supervision des comptes de manière automatisée.
L'objectif de cet exercice est de développer un script Shell structuré nommé stat_users.sh permettant d'exploiter un
extrait de ce fichier en utilisant les techniques fondamentales du Scripting.
Un extrait de ce fichier est présenté dans la figure suivante.
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash

(Les questions de l'Exercice 3 figurent sur les pages suivantes du sujet original.)

Vous aimerez peut-être aussi