Académique Documents
Professionnel Documents
Culture Documents
bretznerR / TP03_Unix.md
Last active 5 years ago
Star
Code Revisions 3
TP03_Unix.md
TP 03 : Shell bash
Exercice : paramètres
Ecrire un script affichant le nombre de paramètres, le nom du script, la valeur du troisième
paramètre ainsi que celle de tous les paramètres.
#!/bin/bash
#Bretzner Raphaël
echo "Bonjour, vous avez rentré $# paramètres"
echo "Le nom du script est $0"
echo "Le 3ème paramètre est $3"
echo "Voici la liste des paramètres : $@"
On vérifie tout d'abord avec une condition si l'utilisateur a rentré deux arguments. Si c'est
le cas, on stocke dans une variable CONCAT le premier arguments ($1) et le deuxième ($2).
Puis on l'affiche.
#!/bin/bash
#Bretzner Raphaël
if [ $# -eq 2 ]
https://gist.github.com/bretznerR/578236f8a0978d79b9f4ce6dae02fd00 1/7
24/09/2023 18:03 TP03 : Shell Bash · GitHub
then
CONCAT="$1$2"
echo $CONCAT
else
echo "Erreur, vous devez rentrer 2 paramètres."
fi
Check que l'utilisateur ai entré un argument. Si oui : Check le type du fichier dont le nom a
été saisi en argument, et on stocke son type (répertoire/fichier ordinaire) dans une variable
Affiche après le check. Plusieurs tests de suite pour vérifier les permissions du fichier
(lecture, écriture, execution) en les concaténant à chaque fois dans une variable On affiche
après cette série de test le contenu de la variable.
#!/bin/bash
#Bretzner Raphaël
if [ $# -eq 1 ]
then
if [[ -d $1 ]]
then
path_file="répertoire"
elif [[ -f $1 ]]
then
path_file="fichier ordinaire"
if [ -s $1 ]
then
path_file="$path_file qui n'est pas vide"
else
path_file="$path_file vide"
fi
else
echo "$1 n'est pas valide"
exit 1
fi
if [ -r $1 ]
then
permission="lecture"
fi
if [ -w $1 ]
then
permission="$permission écriture"
https://gist.github.com/bretznerR/578236f8a0978d79b9f4ce6dae02fd00 2/7
24/09/2023 18:03 TP03 : Shell Bash · GitHub
fi
if [ -x $1 ]
then
permission="$permission exécution"
fi
Ecrire un script bash permettant d’afficher le contenu d’un repertoire en separant les
fichiers et les (sous)repertoires.
Check s'il n'y a qu'un seul paramètre. Si oui, check si celui correspond bien à un nom de
répertoire. Si c'est le cas, on parcours la liste des fichiers "simples" du répertoire à l'aide
d'une boucle "for" et on les affiche. On fait de même pour les répertoires.
#!/bin/bash
#Bretzner Raphaël
https://gist.github.com/bretznerR/578236f8a0978d79b9f4ce6dae02fd00 3/7
24/09/2023 18:03 TP03 : Shell Bash · GitHub
if [ $# -eq 1 ]
then
if [[ -d $1 ]]
then
echo "####### fichiers dans $1"
for file in "$1"*
do
if [[ -f "$file" ]]
then
echo $file
fi
done
echo "####### repertoires dans $1"
for file in "$1"*
do
if [[ -d "$file" ]]
then
echo $file
fi
done
else
echo "Erreur, vous devez rentrer un répertoire et non un fichier
ordinaire"
fi
else
echo "Erreur, vous devez rentrer 1 paramètres."
fi
Check dans un premier temps qu'il n'y ai pas de paramètres. Si ok, on parcours, avec awk,
les lignes du fichier /etc/passwd, qui correspondent chacune à un utilisateur. On effectue
une condition pour vérifier le 3ème élément (UID), soit supérieur ou égal à 100. Si la
condition est respectée on affiche le nom de l'utilisateur et son UID.
#!/bin/bash
#Bretzner Raphaël
if [ $# -eq 0 ]
then
awk -F':' '$3>99 {print User $1 " UID: " $3}' /etc/passwd | column -t |
grep -v nobody
else
echo "Erreur, vous ne devez pas entrer de paramètres"
fi
https://gist.github.com/bretznerR/578236f8a0978d79b9f4ce6dae02fd00 4/7
24/09/2023 18:03 TP03 : Shell Bash · GitHub
Check qu'il n'y a qu'un seul paramètre. Si oui, on parcours avec la commande awk les
lignes du fichier /etc/passwd en lui transmettant la variable "var" contenant le paramètre.
Check que ce dernier corresponde au nom de l'utilisateur ($1) ou au UID ($3). Si vrai alors
l'utilisateur existe et affiche un message contenant le nom et l'UID de l'utilisateur
recherché.
#!/bin/bash
if [ $# -eq 1 ]
then
dir="/etc/passwd"
awk -v var=$1 -F : '{
if(var==$1 || var==$3)
print "Cet utilisateur nommé " $1 " existe avec comme UID : " $3
}' $dir
else
echo "Erreur, vous devez rentrer un UID valide ou un nom d'utilisateur"
fi
login
Nom
Prenom
UID
GID
Commentaires
https://gist.github.com/bretznerR/578236f8a0978d79b9f4ce6dae02fd00 5/7
24/09/2023 18:03 TP03 : Shell Bash · GitHub
#!/bin/bash
#Bretzner Raphaël
ROOT_UID=0
SUCCESS=0
E_USEREXISTS=70
else
echo " this programm needs 2 arguments you have given $# "
echo " you have to call the script $0 username and the pass "
fi
exit 0
Exercice : appreciation
Creer un script qui demande à l’utilisateur de saisir une note et qui affiche un message en
fonction de cette note :
“insuffisant” si la note est inférieur à 10. Pour quitter le programme l’utiliateur devra
appuyer sur q.
until [ "$note" -lt 0 ]; do echo "Entrez votre note (q pour quitter) :" read -r note if [
"$note" = "q" ]; then note=-1 echo "au revoir !" elif [ "$note" -ge 16 ]; then echo "très
bien" elif [ "$note" -ge 14 ]; then echo "bien" elif [ "$note" -ge 12 ]; then echo "assez
bien" elif [ "$note" -ge 10 ]; then echo "moyen" elif [ "$note" -ge 0 ]; then echo
"insuffisant" else echo "au revoir !" fi let i=$i+1 done
Fin
https://gist.github.com/bretznerR/578236f8a0978d79b9f4ce6dae02fd00 7/7