Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 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.
- On utilise succesivement les variables $# , $0 , $3 , $@.
- #!/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 : $@"
- ## Exercice : verification du nombre de paramètres
- Ecrire un script qui concatène les deux paramètres et affiche une erreur si le nombre de paramètre ne vaut pas 2.
- 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 ]
- then
- CONCAT="$1$2"
- echo $CONCAT
- else
- echo "Erreur, vous devez rentrer 2 paramètres."
- fi
- ## Exercice : argument type et droits
- Creer un script qui precisera le type du fichier passe en paramètre, ses permissions d’accès pour l’utilisateur, ou s’il n’existe pas.
- 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
- echo "Le fichier $1 est un $path_file"
- if [ -r $1 ]
- then
- permission="lecture"
- fi
- if [ -w $1 ]
- then
- permission="$permission écriture"
- fi
- if [ -x $1 ]
- then
- permission="$permission exécution"
- fi
- echo "$0 est accessible par $USER en $permission"
- else
- echo "Erreur, vous devez rentrer 1 paramètres."
- fi
- then
- fichier_type_string="fichier ordinaire"
- if [ -s $1 ]
- then
- fichier_type_string="$fichier_type_string qui n'est pas vide"
- else
- fichier_type_string="$fichier_type_string vide"
- fi
- else
- echo "$1 n'est pas valide"
- exit 1
- fi
- echo "Le fichier $1 est un $fichier_type_string"
- if [ -r $1 ]
- then
- permission="lecture"
- fi
- if [ -w $1 ]
- then
- permission="$permission écriture"
- fi
- if [ -x $1 ]
- then
- permission="$permission exécution"
- fi
- echo "$0 est accessible par $USER en $permission"
- else
- echo "Erreur, vous devez rentrer 1 paramètres."
- fi
- ## Exercice : Afficher le contenu d’un repertoire
- 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
- 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
- ## Exercice : Lister les utilisateurs
- Ecrire un script bash affichant la liste des noms de login des utilisateurs definis dans /etc/passwd ayant un UID superieur à 100.
- 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
- ## Exercice : Mon utilisateur existe t’il
- Ecrire un script qui verifie si un utilisateur existe deja.
- - en fonction d’un login passe en paramètres
- - en fonction d’un UID passe en paramètres
- Si l’utilisateur existe retourner son UID. Sinon ne rien renvoyer.
- 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
- ## Exercice : Creation utilisateur
- Ecrire un script pour creer un compte utilisateur voir :
- man useradd
- Utilisez votre script de verification d’existance d’utilisateur avant de creer.
- Il faudra verifier que l’utilisateur en cours d’execution est bien root voir
- echo $USER
- Il faudra creer son home dans /home apres avoir verifier qu’il n'y a pas déjà un repertoire
- portant le même nom.
- Il faudra repondre à une suite de question : voir
- man read
- - login
- - Nom
- - Prenom
- - UID
- - GID
- - Commentaires
- #!/bin/bash
- #Bretzner Raphaël
- ROOT_UID=0
- SUCCESS=0
- E_USEREXISTS=70
- # Run as root, of course. (this might not be necessary, because we have to run the script somehow with root anyway)
- if [ "$UID" -ne "$ROOT_UID" ]
- then
- echo "Must be root to run this script."
- exit $E_NOTROOT
- fi
- #test, if both argument are there
- if [ $# -eq 2 ]; then
- username=$1
- pass=$2
- # Check if user already exists.
- grep -q "$username" /etc/passwd
- if [ $? -eq $SUCCESS ]
- then
- echo "User $username does already exist."
- echo "please chose another username."
- exit $E_USEREXISTS
- fi
- useradd -p `mkpasswd "$pass"` -d /home/"$username" -m -g users -s /bin/bash "$username"
- echo "the account is setup"
- 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 : lecture au clavier
- ## Exercice : appreciation
- Creer un script qui demande à l’utilisateur de saisir une note et qui affiche un message en
- fonction de cette note :
- - “très bien” si la note est entre 16 et 20 ;
- - “bien” lorsqu’elle est entre 14 et 16 ;
- - “assez bien” si la note est entre 12 et 14 ;
- - “moyen” si la note est entre 10 et 12 ;
- - “insuffisant” si la note est inférieur à 10.
- Pour quitter le programme l’utiliateur devra appuyer sur q.
- #!/bin/bash
- #Bretzner Raphaël
- note=0
- i=0
- 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
- if [ "$i" -le 0 ]; then
- let i=1
- fi
- Fin
Add Comment
Please, Sign In to add comment