blob: 214a019b181c6b9a9b101f5ad5ce6bbcd05e799d (
plain)
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
#!/bin/bash
######################################
#### Default Vars ####################
######################################
user_groups=""
default_groups=(users disk network floppy fuse video lp audio cdrom halusers scanner)
# Avoid spaces troubles :)
OLD_IFS=$IFS
IFS="|
"
######################################
#### Functions #######################
######################################
check_args()
{
description="$1"
name="$2"
name_test=`echo -n "$name" | sed 's@^[a-z][a-z0-9]*$@@g'`
if [ "$name_test" != "" ]; then
echo 1>&2 "CRITICAL - Le nom contient des caractères interdits:
Il doit commencer par une lettre uniquement
et ne peut contenir que des minuscules et des chiffres
"
return 1
fi
if grep "$name" /etc/passwd > /dev/null; then
echo 1>&2 "Le nom $name existe deja!"
return 2
fi
desc_test=`echo "$description" | sed 's@^[[:alnum:]! -.,~_@;%<>?]*$@@ig'`
if [ "$desc_test" != "" ]; then
echo 1>&2 "CRITICAL - La description contient des caractères interdits:
Elle ne peut contenir que des lettres/chiffres et les caractères
suivants ! -.,~_\\\@;%<>?
"
return 3
fi
return 0
}
usage()
{
echo 1>&2 'USAGE:
nu [<description> <nomutilisateur>]
Si <nomutilisateur> existe déjà, un message sera envoye sur le terminal,
dans ce cas, aucun changement ne sera fait, et aucun nouveau compte ne
sera créé.
<description> doit être valide pour le champ du fichier /etc/passwd description
Ce qui veut dire que ce champ ne doit pas contenir de ":".
'
exit 1
}
######################################
#### Scripting time ##################
######################################
if [ $# -eq 1 -o $# -gt 2 ]; then
usage
fi
if [ $UID -ne 0 ]; then
echo 1>&2 "Veuillez exécuter cette commande en root"
exit 1;
fi
if [ $# -lt 2 ]; then
echo -n "Nom de l'utilisateur: "
read name
echo -n "Description de l'utilisateur: "
read description
else
description="$1"
name="$2"
fi
check_args "$description" "$name"
ret=$?
while [ $ret -ne 0 ]; do
if [ $ret -lt 3 ]; then
echo -n "Nom de l'utilisateur: "
read name
fi
if [ $ret -eq 3 ]; then
echo -n "Description de l'utilisateur: "
read description
fi
if [ "$name" == "!stop!" -o "$description" == "!stop!" ]; then
exit 1
fi
check_args "$description" "$name"
ret=$?
done
i=0
while [ -n "${default_groups[i]}" ]; do
if grep "${default_groups[i]}" /etc/group > /dev/null ; then
if [ -z "$user_groups" ]; then
user_groups="${default_groups[i]}"
else
user_groups="$user_groups,${default_groups[i]}"
fi
# echo "groupes : $user_groups"
# else
# echo 1>&2 ' Veuillez installez un gestionnaire de fenetre,
# redemarrer la machine dans ce gestionnaire,
# et relancer cette commande.
#'
# exit 1
fi
i=$((i+1))
done
echo 1>&2 "
Création de $name.
"
# echo "/usr/sbin/useradd -c ${description} $user_groups -m ${name}"
if [ -z "$user_groups" ]; then
/usr/sbin/useradd -c "${description}" -m "${name}" || exit 1
else
/usr/sbin/useradd -c "${description}" -G "$user_groups" -m "${name}" || exit 1
fi
passwd "$name"
exit 0
|