creation utilisateur automatisé

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

creation utilisateur automatisé

Messagepar Chiboune » 22 Avr 2004 11:32

Bonjour a tous !!!
je voudrait creer des utilisateurs via un script qui va chercher les mot de passe et les nom d'utilisateur dans un fichier..
je n'y arrive pas merci de votre aide
Avatar de l’utilisateur
Chiboune
Premier-Maître
Premier-Maître
 
Messages: 56
Inscrit le: 22 Jan 2004 01:00
Localisation: Lyon

Messagepar Geoffroy_jojo » 14 Avr 2005 16:50

et hop, on remonte le vieu topic ...
cela m'interresserait aussi :roll: :roll:

j'ai bien entendu parler de lat-users
lat <==> lazy admin tools
mais incapable de trouver les sources ou rpm, voir m^me un joli .deb

merci a vous


[edit]
en fait, si, j'ai trouvé : http://www.contribs.org/contribs/mblotw ... -tools.htm
mais ca a l'air d'etre uniquement pour SME :oops:
[/edit]
«Microsoft ce n'est pas la réponse, Microsoft c'est la question et la réponse est non!»
Geoffroy_jojo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 05 Déc 2004 16:57
Localisation: aix en provence

Messagepar Geoffroy_jojo » 14 Avr 2005 17:49

Code: Tout sélectionner
#!/bin/bash
# SCRIPT creer2.sh
# ================
# Création automatique des comptes d'apres le fichier users.txt
# appel : ./creer2.sh [users.txt]

# analyse de la ligne de commande
# a t-on passe un parametre ?
if [ $# = 1 ]
then
   fichier=$1
else
   echo "Nom du fichier des comptes Linux a creer [par defaut users.txt]"
   read fichier
   if [ -z $fichier ]
   then
     fichier="users.txt"
     echo "Utilisation du fichier $fichier pour genener les comptes"
   fi
fi   
# le fichier $fichier existe t-il ? si non, sortie du script par exit 1
if [ ! -e $fichier ]
then
     echo "Le fichier $fichier n'existe pas ! Verifiez !"
     exit 1
fi   

# Lecture une par une des lignes de $fichier
cat $fichier | while true
do
   read ligne
# c'est la fin du fichier --> sortie brutale de la boucle
   if [ "$ligne" = "" ]
   then
   break
   fi
# Traitement de la ligne (attention pas de " " autour de $ligne)
# on "eclate" la ligne en affectant les variables de position
   set -- $ligne
   login=$1
   mdp=$2
   nom=$3
   groupe=$4
   echo $login $passwd $groupe $nom
# existe t-il un sous-rep au nom $login dans /home/ ?
   if [ -d "/home/$login" ]
   then
     echo "Le compte $login existe deja ! " 
# on cree le compte avec $groupe comme groupe primaire
   else
    useradd -G $groupe $login
    echo $mdp | (passwd --stdin $login)
    smbpasswd -a $login $mdp
    uid=$(grep -w "^$login" /etc/passwd | cut -d: -f3)
    echo "creation de $login / uid = $uid / passwd = $mdp"   
    echo "creation de $login / uid = $uid / passwd = $mdp, cree le $(date)" >>creer.txt
   fi
done   
# fin boucle de creation
echo "----------------------------------------------" >>creer.txt



pitète comme ca, j'ai pas le temps de tester ce soir, mais ca devrait marcher
«Microsoft ce n'est pas la réponse, Microsoft c'est la question et la réponse est non!»
Geoffroy_jojo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 05 Déc 2004 16:57
Localisation: aix en provence

Messagepar Jacques- » 14 Avr 2005 22:21

Juste une petite remarque sur la boucle pour le read, il est plus facile d'écrire ceci, et ça évite de tester et de faire un break en sortie :

while read LaLigne ; do
# Traitement dans la boucle avec $LaLigne
done < LeFichierQuiEstALire

Jacques
Avatar de l’utilisateur
Jacques-
Vice-Amiral
Vice-Amiral
 
Messages: 952
Inscrit le: 23 Jan 2003 01:00

Messagepar Geoffroy_jojo » 15 Avr 2005 10:01

voici une version pour debian qui ne supporte pas cette argument là passwd --stdin

Code: Tout sélectionner
#!/bin/bash
# SCRIPT creer2.sh
# ================
# Création automatique des comptes d'apres le fichier users.txt
# appel : ./creer2.sh [users.txt]

# analyse de la ligne de commande
# a t-on passe un parametre ?
if [ $# = 1 ]
then
   fichier=$1
else
   echo "Nom du fichier des comptes Linux a creer [par defaut users.txt]"
   read fichier
   if [ -z $fichier ]
   then
     fichier="users.txt"
     echo "Utilisation du fichier $fichier pour genener les comptes"
   fi
fi
# le fichier $fichier existe t-il ? si non, sortie du script par exit 1
if [ ! -e $fichier ]
then
     echo "Le fichier $fichier n'existe pas ! Verifiez !"
     exit 1
fi

# Lecture une par une des lignes de $fichier
cat $fichier | while true
do
   read ligne
# c'est la fin du fichier --> sortie brutale de la boucle
   if [ "$ligne" = "" ]
   then
   break
   fi
# Traitement de la ligne (attention pas de " " autour de $ligne)
# on "eclate" la ligne en affectant les variables de position
   set -- $ligne
   login=$1
   mdp=$2
   nom=$3
   groupe=$4
   echo $login $passwd $groupe $nom
# existe t-il un sous-rep au nom $login dans /home/ ?
   if [ -d "/home/$login" ]
   then
     echo "Le compte $login existe deja ! "
# on cree le compte avec $groupe comme groupe primaire
   else
    useradd -G $groupe $login
    echo $login:$mdp | chpasswd
    smbpasswd -a $login $mdp
    uid=$(grep -w "^$login" /etc/passwd | cut -d: -f3)
    echo "creation de $login / uid = $uid / passwd = $mdp"
    echo "creation de $login / uid = $uid / passwd = $mdp, cree le $(date)" >>creer.txt
   fi
done
# fin boucle de creation
echo "----------------------------------------------" >>creer.txt


le fichier doit être de la forme :
Code: Tout sélectionner
login pass nom groupe
login pass nom groupe
«Microsoft ce n'est pas la réponse, Microsoft c'est la question et la réponse est non!»
Geoffroy_jojo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 05 Déc 2004 16:57
Localisation: aix en provence


Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron