Script création d'utilisateur
Fermé
king_neo2001
Messages postés
3
Date d'inscription
mardi 15 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
-
15 mai 2007 à 18:16
cloonn - 12 oct. 2009 à 09:36
cloonn - 12 oct. 2009 à 09:36
A voir également:
- Script création d'utilisateur
- Script vidéo youtube - Guide
- Creation compte gmail - Guide
- Création site web - Guide
- Création compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
3 réponses
king_neo2001
Messages postés
3
Date d'inscription
mardi 15 mai 2007
Statut
Membre
Dernière intervention
12 juin 2007
4
15 mai 2007 à 19:28
15 mai 2007 à 19:28
Merci pour ta réponse... je vais me renseigner mais je dois le rendre lundi nous n'avons fait que 2 cours de linux et a part du mkdir nous n'avons presque rien vu...
Merci beaucoup en tout cas et merci d'avance pour ceux qui pourrait m'aider également.
Merci beaucoup en tout cas et merci d'avance pour ceux qui pourrait m'aider également.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
15 mai 2007 à 18:56
15 mai 2007 à 18:56
Salut,
Un minimum d'effort de ta part aurait été le bienvenu quand même :-\
===================================================
Question 1
Gérez les parametres passés au script(S#,$1,etc).Ne proposez pas de saisie,ne placez pas ces valeurs a l'avance dans les variables. En cas de présence d'un seul paramètre c'est forcement le nom d'utilisateur a créer, le placer dans une variable appelée <<NUSER>>. S'il y a trois parametres alors celui situé apres le -p(pour password) est le mot de passe de l'utilisateur, le placer dans une variable PASSWD. Le -p peut etre placé en premier mais aussi apres le nom de l'utilisateur autrement dit l'ordre des parametres n'a pas d'importance
Voir : les parametres
Utilisation de getopts
Voir aussi "man bash" (chercher "getopts"
Question 2
Modifiez ou ajouter la gestion des erreurs au bloc précedent : le script quitte avec une erreur si le nom d'utilisateur n'est pas precisé. Si le mot de passe est absent il es fixé par défaut a password
Voir "getopts" ci-dessus
le remplacement de variables en shell bash
Question 3
un nom d'utilisateur ne doit pas depasser huit caractere. Si le nom depasse 8 caractere quittez avec une erreur.
var==bonjour ; echo ${#var}
man bash chercher "test" ou "["
if [ ... ]; then ...; fi
Question 4
Verifiez si l'utilisateur existe deja (presence dans /etc/passwd)
man grep et code retour ($?)
if [ ... ]; then ...; fi
Question 5
Calculez un UID pour l'utilisateur. Trouvez l'UID le plus élevé dans /etc/passwd et lui ajouter 1. Placer cette valeur dans une variable <<NUID>>. Exclure la recherche de l'utilisateur nobody qui a souvent l'UID le plus elevé.
man grep, man cut, man sort, man expr
Question 6
Le groupe par défaut de l'utilisateur sera <<Users>>. Il existe déjà. placé le GID du groupe <<Users>> dans une variable <<NGID>>
if [ ... ]; then ...; fi
Question 7
Construisez dans une variable <<LIGNE>> la ligne qui sera ajoutée a /etc/passwd. Le shell utiliser est <</bin/bash>>. Le repertoire personnel /home/$NUSER. Le commentaire <<Utilisateur $NUSER>> et le mot de passe reste a << x >>. Ajouter cette ligne a la fin du fichier /etc/passwd. Pour mettre a jour automatiquement le fichier /etc/shadow lancez ensuite la commande << pwconv>>
LIGNE="bla:bla:bla:bla"
echo "$LIGNE" >> /etc/passwd
Question 8
créez le mot de passe de l'utilisateur : utiliser la commande <<passwd>>, en lisant son manuel et notamment le parametre <<--stdin>>. Aucune question ne doit etre posée.
Voir : changer le mot de passe via un script
Question 9
Créer enfin le repertoire personnel de l'utilisateur /home/$NUSER. Deux cas peuvent se présenter; Si le repertoire existe deja changer le proprietaire de ce repertoire et de tout son contenu pour qu'il appartienne a l'utilisateur et au groupe <<users>>. S'il n'existe pas créé le recopiez tous les fichiers contenus dans /etc/skel dedans et changer le proprietaire et le groupe de l'ensemble.
man mkdir, man chown, man chgrp, man cp
if [ ... ]; then ...; fi
;-))
Un minimum d'effort de ta part aurait été le bienvenu quand même :-\
===================================================
Question 1
Gérez les parametres passés au script(S#,$1,etc).Ne proposez pas de saisie,ne placez pas ces valeurs a l'avance dans les variables. En cas de présence d'un seul paramètre c'est forcement le nom d'utilisateur a créer, le placer dans une variable appelée <<NUSER>>. S'il y a trois parametres alors celui situé apres le -p(pour password) est le mot de passe de l'utilisateur, le placer dans une variable PASSWD. Le -p peut etre placé en premier mais aussi apres le nom de l'utilisateur autrement dit l'ordre des parametres n'a pas d'importance
Voir : les parametres
Utilisation de getopts
Voir aussi "man bash" (chercher "getopts"
Question 2
Modifiez ou ajouter la gestion des erreurs au bloc précedent : le script quitte avec une erreur si le nom d'utilisateur n'est pas precisé. Si le mot de passe est absent il es fixé par défaut a password
Voir "getopts" ci-dessus
le remplacement de variables en shell bash
Question 3
un nom d'utilisateur ne doit pas depasser huit caractere. Si le nom depasse 8 caractere quittez avec une erreur.
var==bonjour ; echo ${#var}
man bash chercher "test" ou "["
if [ ... ]; then ...; fi
Question 4
Verifiez si l'utilisateur existe deja (presence dans /etc/passwd)
man grep et code retour ($?)
if [ ... ]; then ...; fi
Question 5
Calculez un UID pour l'utilisateur. Trouvez l'UID le plus élevé dans /etc/passwd et lui ajouter 1. Placer cette valeur dans une variable <<NUID>>. Exclure la recherche de l'utilisateur nobody qui a souvent l'UID le plus elevé.
man grep, man cut, man sort, man expr
Question 6
Le groupe par défaut de l'utilisateur sera <<Users>>. Il existe déjà. placé le GID du groupe <<Users>> dans une variable <<NGID>>
if [ ... ]; then ...; fi
Question 7
Construisez dans une variable <<LIGNE>> la ligne qui sera ajoutée a /etc/passwd. Le shell utiliser est <</bin/bash>>. Le repertoire personnel /home/$NUSER. Le commentaire <<Utilisateur $NUSER>> et le mot de passe reste a << x >>. Ajouter cette ligne a la fin du fichier /etc/passwd. Pour mettre a jour automatiquement le fichier /etc/shadow lancez ensuite la commande << pwconv>>
LIGNE="bla:bla:bla:bla"
echo "$LIGNE" >> /etc/passwd
Question 8
créez le mot de passe de l'utilisateur : utiliser la commande <<passwd>>, en lisant son manuel et notamment le parametre <<--stdin>>. Aucune question ne doit etre posée.
Voir : changer le mot de passe via un script
Question 9
Créer enfin le repertoire personnel de l'utilisateur /home/$NUSER. Deux cas peuvent se présenter; Si le repertoire existe deja changer le proprietaire de ce repertoire et de tout son contenu pour qu'il appartienne a l'utilisateur et au groupe <<users>>. S'il n'existe pas créé le recopiez tous les fichiers contenus dans /etc/skel dedans et changer le proprietaire et le groupe de l'ensemble.
man mkdir, man chown, man chgrp, man cp
if [ ... ]; then ...; fi
;-))
ce script vous donne une idée sur l'ajout de ++ utilistauers sous ubuntu sans perdre du temps à saisir les informations : tel, addr, mot de passe ...
### debut de fichier
#!/bin/bash
for i in `cat users.txt`
do
groupadd $i
useradd -m $i -g $i -d /home/$i -s /bin/bash
echo $i:$i | chpasswd
done
### fin de fichier
users.txt : contient la liste des utilisateurs
mot de passe = l'utilisateur
### debut de fichier
#!/bin/bash
for i in `cat users.txt`
do
groupadd $i
useradd -m $i -g $i -d /home/$i -s /bin/bash
echo $i:$i | chpasswd
done
### fin de fichier
users.txt : contient la liste des utilisateurs
mot de passe = l'utilisateur
19 mai 2008 à 09:27
J'ai réalisé un script d'administration (qui doit encore être optimisé) peut être t'aidera t'il !
code :
#!/bin/bash
# *********************************************************************************Fonction Création utilisateur
function gestion_utilisateur () {
function creation_supp_utilisateur () {
echo -e " \033[31m Supprimer ou créer un utilisateur ? \033[00m"
echo " Taper x pour supprimer / Taper c pour créer :"
read choix
if [ $choix = "c" ] ;
then
echo "Entrer le login de l'utilisateur souhaité :"
read user
adduser -a $user
echo -e "\033[31m L'utilisateur $user à bien été crée ! \033[00m"
echo "Appuyer sur la touche <Entrée> pour revenir au menu..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
else
if [ $choix = "x" ];
then
echo "Donner le nom de l'utilisateur à supprimer :"
read utildel
userdel -r $utildel
echo -e "\033[31m La suppression de l'utilisateur $utildel est confirmée \033[00m"
echo "Appuyer sur la touche <Entrée> pour revenir au menu..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
else
exit 0
fi
fi
menu_utilisateur
}
function creation_supp_group () {
echo -e " \033[31m Supprimer ou créer un groupe ? \033[00m"
echo " Taper x pour supprimer / Taper c pour créer :"
read choix
if [ $choix = "c" ] ;
then
echo "Entrer le nom du groupe souhaité :"
read group
groupadd $group
echo -e "\033[31m Le group $group à bien été crée ! \033[00m"
echo "Voulez-vous vérifier en regardant le fichier /etc/group ? (y/n)"
read rep
if [ $rep = "y" ] ;
then
vi /etc/group
else
echo "Appuyer sur la touche <Entrée> pour revenir au menu..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
menu_utilisateur
fi
else
if [ $choix = "x" ];
then
echo "Donner le nom du groupe à supprimer :"
read group
groupdel $group
echo -e "\033[31m La suppression du group $group est confirmée \033[00m"
echo "Voulez-vous vérifier en regardant le fichier /etc/group ? (y/n)"
read rep
if [ $rep = "y" ] ;
then
vi /etc/group
else
echo "Appuyer sur la touche <Entrée> pour revenir au menu..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
menu_utilisateur
fi
else
exit 0
fi
fi
menu_utilisateur
}
function voir_utilisateur () {
who -q
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
menu_utilisateur
}
function Menu_principal () {
Menu
}
function menu_utilisateur () {
clear
echo ""
echo -e "\033[36mProjet Linux eXia 2008 \033[00m"
echo -e " \033[36m3ème année RIR \033[00m "
echo -e " \033[37m________________________________\033[00m "
echo -e " \033[37m| Gestion des utilisateurs |\033[00m "
echo""
echo -e "\033[33m*** MENU *** :\033[00m"
echo""
echo "1 - Créer / Supprimer un utilisateur"
echo "2 - Créer / Supprimer un groupe"
echo "3 - Voir les utilisateurs connectés"
echo "4 - Revenir au menu Principal"
echo ""
echo "Entrez votre choix :"
read CHOIX
case $CHOIX in
1)creation_supp_utilisateur;;
2)creation_supp_group;;
3)voir_utilisateur;;
4)Menu_principal;;
*)exit 0;;
esac
}
menu_utilisateur
}
# *********************************************************************************Fonction tuer un processus
function tuer_proc () {
ps ax --sort=tty,pid | more
echo " VEUILLEZ TAPER LE(S) "PID" DU(DES) PROCESS A TUER: "
read PROCESS
for TRUC in $PROCESS; do
kill -9 $TRUC
echo -e "\033[31m Le(s) processus $PROCESS on été arrétés \033[00m"
done
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
Menu
}
# *********************************************************************************Fonction Création de répertoire
function creer_rep () {
echo "Quel est le nom du répertoire ? (tapez le nom) :"
read nom
mkdir "$nom"
chmod 0733 $nom
echo -e "\033[31m Le dossier $nom à été créé avec les droits sur le bureau \033[00m"
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
Menu
}
# *********************************************************************************Fonction sauvegarder fichier
function sauv_fichier () {
function sauv_resol_conf () {
rsync -a /etc/resolv.conf /home/dyllan/Bureau/sauv_du_$(date +%d_%m_%y).log
echo -e "\033[31m Le fichier resolv.conf du $(date +%d_%m_%y) est bien sauvegardé sur le bureau \033[00m"
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
menu_sauv
}
function sauv_suppr_autre() {
echo -e " \033[31m Supprimer ou Sauvegarder ? \033[00m"
echo " Taper x pour supprimer / Taper s pour sauvegarder :"
read choix
if [ $choix = "s" ] ;
then
echo "Entrez le chemin du repertoire à sauvegarder"
read chemin
echo "Entrez le chemin de l'endroit où vous voulez le sauvegarder"
read dest
cp -r $chemin $dest
echo "La sauvegarde a été réalisé"
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
else
if [ $choix = "x" ];
then
echo "Entrez le chemin du repertoire à supprimer"
read chem
rm -r $chem
echo "La suppression de $chem est confirmée"
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
else
exit 0
fi
fi
menu_sauv
}
function Menu_principal () {
Menu
}
function menu_sauv () {
clear
echo ""
echo -e "\033[36mProjet Linux eXia 2008 \033[00m"
echo -e " \033[36m3ème année RIR \033[00m "
echo -e " \033[37m__________________________\033[00m "
echo -e " \033[37m| Menu de Sauvegarde |\033[00m "
echo""
echo -e "\033[33m*** MENU *** :\033[00m"
echo""
echo "1 - Sauvegarder le fichier resolv.conf"
echo "2 - Sauvegarder / Supprimer un fichier ou répertoire"
echo "3 - Revenir au menu Principal"
echo ""
echo "Entrez votre choix :"
read CHOIX
case $CHOIX in
1)sauv_resol_conf;;
2)sauv_suppr_autre;;
3)Menu_principal;;
*)exit 0;;
esac
}
menu_sauv
}
# *********************************************************************************Fonction Récupérer les processus
function recuperer_processus () {
ps -aux >> proccessus_du_$(date +%d_%m_%y).log
echo -e "\033[31m Le fichier Log de récupération des processus à été créé sur le bureau \033[00m"
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
Menu
}
# *********************************************************************************Fonction Service Networking
function networking () {
function restart () {
/etc/init.d/networking restart
echo "revenir au menu ? [y/n]"
read reponse
if [ $reponse = "y" ] ; then
menu
else
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
Menu
fi
}
function stop () {
/etc/init.d/networking stop
echo "revenir au menu ? [y/n]"
read reponse
if [ $reponse = "y" ] ; then
menu
else
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
Menu
fi
}
function start () {
/etc/init.d/networking start
echo "revenir au menu ? [y/n]"
read reponse
if [ $reponse = "y" ] ; then
menu
else
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
Menu
fi
}
function edit () {
vi /etc/resolv.conf
clear
echo""
echo "Revenir au menu Administration du service Networking ? [y/n]"
read reponse
if [ $reponse = "y" ] ; then
menu
else
echo "Appuyer sur la touche <Entrée> pour continuer..."
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
Menu
fi
}
function Menu_principal () {
Menu
}
function menu () {
clear
echo ""
echo -e "\033[36mProjet Linux eXia 2008 \033[00m"
echo -e " \033[36m3ème année RIR \033[00m "
echo -e " \033[37m____________________________________________\033[00m "
echo -e " \033[37m| Administration du service Networking |\033[00m "
echo""
echo -e "\033[33m*** MENU *** :\033[00m"
echo""
echo "1 - Restart"
echo "2 - Stop"
echo "3 - Start"
echo "4 - Editer le fichier resolv.conf"
echo "5 - Revenir au menu Principal"
echo ""
echo "Entrez votre choix :"
read CHOIX
case $CHOIX in
1)restart;;
2)stop;;
3)start;;
4)edit;;
5)Menu_principal;;
*)exit 0;;
esac
}
menu
}
# *********************************************************************************Fonction Quitter
function quitter () {
exit
}
# *********************************************************************************Fonction MENU
function Menu () {
echo ""
echo -e "\033[36mProjet Linux eXia 2008 \033[00m"
echo -e " \033[36m3ème année RIR \033[00m "
echo -e " \033[37m _______________________________ \033[00m "
echo -e " \033[37m| Script d'administration |\033[00m "
echo""
echo -e "\033[33m*** Menu Principal *** :\033[00m"
echo""
echo "1 - Gestion des utilisateurs"
echo "2 - Gérer les processus"
echo "3 - Créer un répertoire"
echo "4 - Sauvegarde"
echo "5 - Récupérer les processus"
echo "6 - Administration du service Networking"
echo "7 - Quitter"
echo ""
echo "Entrez votre choix :"
read CHOIX
case $CHOIX in
1)gestion_utilisateur;;
2)tuer_proc;;
3)creer_rep;;
4)sauv_fichier;;
5)recuperer_processus;;
6)networking;;
7)quitter;;
*)exit 0;;
esac
}
if [ ! `id -u` = 0 ]; then
echo -e "\033[31m Ce script doit être executé en root \033[00m"
echo""
echo "**********************************************"
echo "Appuyer sur la touche <Entrée> pour quitter..."
echo "**********************************************"
read touche
case $touche in
*)echo -e "\033[37m**** Reprise du script... ****\033[00m";;
esac
exit 0
else
Menu
fi
12 oct. 2009 à 09:36