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 : Sélectionner tout - Visualiser dans une fenêtre à part
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