Script ajout d'utilisateurs
Voici un exercice linux que j'ai pu faire mais j'ai des erreurs que je comprends pas trop. Aidez-moi svp.
ÉNONCE :
Créez un script réalisant les tâches suivantes à partir d’un fichier texte contenant des logins, groupes
et passwords séparés par des « ; » :
1. Sans options, le script affiche une aide donnant les options possibles.
2. L’option -f permet de préciser l’emplacement du fichier. Si l’option n’est pas utilisée, alors le
script utilise par défaut le fichier « listing.txt » se trouvant dans le même répertoire que le
script.
3. L’option -d permet de choisir un séparateur autre que le « ; ».
4. L’option -a permet d’ajouter de nouveaux logins/groupes/passwords dans le fichier. Ceux-ci
sont demandés à l’utilisateur et ajoutés en fin de fichier.
1. De plus, le script vérifie que les utilisateurs proposés ne soient pas déjà présents dans le
fichier. Auquel cas, il demande un autre nom d’utilisateur.
5. Avec l’option -e, le script crée les utilisateurs
1. avec comme groupe principal et comme mot de passe, ceux précisés dans le fichier
fourni.
6. Lorsque le script rencontre une erreur, la valeur de retour est 1. Sinon, elle vaut 0.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| #!/bin/bash
fichier="/root/listusers.txt"
sep=";"
recommencer=1
function adduser(){
while [ $recommencer -eq 1 ]; do
read -p "Entrez votre utilisteur comme suit : user,pass,groupe : " user
nom=$(echo $user | cut -d$sep -f1)
recommencer=0
while read line
do
verifnom=$(echo $line | cut -d$sep -f1)
echo "Nom à vérifier : $verifnom"
echo "Nom passé en paramètre : $nom"
if [ "$verifnom" = "$nom" ]
then
recommencer=1
echo "Erreur l'user est déjà dans la liste !"
break
fi
done < $fichier
if [ $recommencer -eq 0 ]; then
echo "$user" >> $fichier
fi
done
}
function creerusers (){
while read line
do
name=$(echo $line | cut -d$sep -f1)
pass=$(echo $line | cut -d$sep -f2)
group=$(echo $line | cut -d$sep -f3)
sudo groupadd $group
sudo useradd $name -p "$pass" -g "$group"
id $name
done < $fichier
}
function aide (){
echo "Texte d'aide ici..."
}
if [ $# -ne 0 ]; then
if [ -e "$fichier" ]; then
while getopts "s:f:ac" options
do
case $options in
s)
sep=$OPTARG;;
f)
echo "Test"
echo $OPTARG
if [ -f $OPTARG ]; then
fichier=$OPTARG
else
echo "Le fichier spécifié n'existe pas !"
exit -1
fi;;
a)
adduser;;
c)
creerusers;;
*)
echo "Option $* inconnue !"
esac
done
exit 0
else
echo "Le fichier des users n'existe pas !"
exit -1
fi
else
echo "Veuillez entrer au moins un argument !"
aide
exit -1
fi |
Un grand MERCI d'avance :D