From 9291e062cb24bac5d7c7059d4dc64669c1917b33 Mon Sep 17 00:00:00 2001 From: tnut Date: Sun, 8 Jan 2012 12:12:28 +0100 Subject: aaabasicfs 2011-3 et split des dépot base et extra en 2 git séparé MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aaabasicfs/nu | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100755 aaabasicfs/nu (limited to 'aaabasicfs/nu') diff --git a/aaabasicfs/nu b/aaabasicfs/nu new file mode 100755 index 000000000..2828c6392 --- /dev/null +++ b/aaabasicfs/nu @@ -0,0 +1,136 @@ +#!/bin/bash + + +###################################### +#### Default Vars #################### +###################################### + +user_groups="" +default_groups=(users disk network floppy fuse video lp tty audio cdrom halusers scanner admin) + +# 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 [ ] + Si 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éé. + + 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 + -- cgit v1.2.3-70-g09d2