Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 Pb dans l'execution d'un script de création d'utilisateurs Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
Nochancexp
Forumeur fréquent
Forumeur fréquent


Post-BTS
Sexe: Sexe:Masculin
Messages: 74
Localisation: Paris

MessagePosté le: Lun 04 Mai 2009 - 13:43 Répondre en citantRevenir en haut

Voila le script


Code:
#!/bin/bash
# SCRIPT creautil.sh
# ================
# Création automatique des comptes d'apres le fichier eleves.txt
# appel : ./creautil.sh [eleves.txt]
# ================


fich=$1 # fichier pointe vers le premier parametre.

if [ -e $1 ] #on vérifie si le fichier entré en paramêtre existe
   then
      while read ligne #on répète pour chaque ligne
         do
            pre=$(echo $ligne | cut -d: -f1) #pre reçoit la 1ere partie de la ligne séparée par “ : ”
            nom=$(echo $ligne | cut -d: -f2) #nom reçoit la 2eme partie de la ligne séparée par “ : ”
            groupe=$(echo $ligne | cut -d: -f3) #groupe reçoit la 3eme partie de la ligne séparée par “ : ”
            login=$nom # le login est le nom de l'utilisateur
            mdp=$nom
            echo $mdp # on test le mot de pass en l'affichant
            echo $login":"$mdp >> comptes.txt #on écrit le login et mot de passe dans comptes.txt
            useradd -d /home/$login -m -s /bin/false -g $groupe $login #création du compte unix
            echo -e "$mdp\n$mdp" | smbpasswd -a -s $login #création compte samba
         done < $fich
else # sinon

   echo "fichier $1 non trouve" # affiche message d'erreur lorsque l'on ne trouve pas le fichier ou se trouve les “prenom:nom:groupe”
fi




j'ai mis ce script dans ma racine avec un autre fichier à côté qui s'appelle : utilisateurs.txt ou j'ai mis le formalisme suivant :

Code:
marie:dupont:utilisateurs
charles:durant:utilisateurs



Lors de l'exécution du script sa se passe bien il créer le compte, MAIS UNIQUEMENT le compte de la première ligne de mon fichier eleves.txt

Mon deuxième problème se site lors du teste du compte créé. Je ne peux pas me connecter, j'utilise pourtant comme login : le nom et comme mot de passe le nom.

Des idées ? merci d'avance

je n'arrive pas à comprendre ces 2 erreur.

_________________
Image
Voir le profil de l'utilisateurEnvoyer un message privé

N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire.
Nochancexp
Forumeur fréquent
Forumeur fréquent


Post-BTS
Sexe: Sexe:Masculin
Messages: 74
Localisation: Paris

MessagePosté le: Lun 04 Mai 2009 - 16:38 Répondre en citantRevenir en haut

Pb de connection est réglé mais il reste toujours mon problème lié au faite que mon script ne créer que l'utilisateur de la première ligne.


Le
Code:
done < $fich
est il correcte pour passer à la ligne suivante ?

Enfin lors de l'exécution du script il apparait une erreur qu'il m'est incompressible :

Code:
samba:/# ./creautil.sh eleves.txt
Unable to modify TDB passwd ! Error : Record exists
 occured while storing the RID index (RID_00000bbe)
Failed to add entry for user marie.durand.
Failed to modify password entry for user marie.durand


j'arrive pourtant à me connecter en tant que "marie.durand" avec son mot de pass qu'à généré pwgen.
j'ai accé à mon /home ainsi qu'aux différents dossiers de partage que j'ai mis en place sur mon serveur samba. et j'ai les bon droits du groupe utilisateur auquel j'appartiens

_________________
Image
Voir le profil de l'utilisateurEnvoyer un message privé
Nochancexp
Forumeur fréquent
Forumeur fréquent


Post-BTS
Sexe: Sexe:Masculin
Messages: 74
Localisation: Paris

MessagePosté le: Lun 04 Mai 2009 - 16:40 Répondre en citantRevenir en haut

Solution trouvée :


Il faut pensé à ne pas oublier de faire un retour chariot ( = ENTRE ) à la fin de votre fichier qui comprend les nom/prénom/groupe de vos future comptes.



Ces utilisateurs créés via ce script ne peuvent pas se connecter en local ( ligne de commande ) sur la machine samba, il faut se connecter à distance via, par exemple un poste XP.

Lorsque je vais dans /etc/group je ne vois donc aucun des nouveaux comptes créés.

Ou se trouvent ses comptes, et leurs groupes ? ( autre que dans comptes.txt généré par le script. )

_________________
Image
Voir le profil de l'utilisateurEnvoyer un message privé
Nochancexp
Forumeur fréquent
Forumeur fréquent


Post-BTS
Sexe: Sexe:Masculin
Messages: 74
Localisation: Paris

MessagePosté le: Lun 04 Mai 2009 - 16:55 Répondre en citantRevenir en haut

je ne trouve pas de commande pour lister les utilisateurs samba .

/!\ Je ne souhaite pas avoir uniquement les utilisateurs samba ayant accé à la machine je souhaite avoir accé à une liste des utilisateurs samba qui n'ont pas forcement un mot de pass Unix, mais qui ont un compte samba actif ( ne veut pas forcément dire qu'il doit être connecter au moment donné sur le serveur.

_________________
Image
Voir le profil de l'utilisateurEnvoyer un message privé
donkey_kong
Résident du forum
Résident du forum


Post-BTS
Sexe: Sexe:Masculin
Messages: 323
Localisation: localhost

MessagePosté le: Lun 04 Mai 2009 - 18:56 Répondre en citantRevenir en haut

Oh c'est mon script que j'avais posté dans un autre topic Very Happy

Ca fait plaisir de voir qu'il sert Cool
Voir le profil de l'utilisateurEnvoyer un message privé
Nochancexp
Forumeur fréquent
Forumeur fréquent


Post-BTS
Sexe: Sexe:Masculin
Messages: 74
Localisation: Paris

MessagePosté le: Mar 05 Mai 2009 - 09:38 Répondre en citantRevenir en haut

Bah oui c'est toi qui me l'avait donné par contre voici une version que j'ai adapter avec un peu plus de commentaire explicatif Wink

Code:
#!/bin/bash
# SCRIPT creautil.sh
# ================
# Création automatique des comptes d'apres le fichier eleves.txt
# appel : ./creautil.sh [eleves.txt]
# ================

fich=$1 # fichier pointe vers le premier parametre.

if [ -e $1 ] # on vérifie si le fichier entré en paramêtre existe
   then # alors
      while read ligne # Boucle “TanQue” pour parcourir chaque ligne
         do # faire
            pre=$(echo $ligne | cut -d: -f1) # pre reçoit la 1ere partie de la ligne séparée par “ : ”
            nom=$(echo $ligne | cut -d: -f2) # nom reçoit la 2eme partie de la ligne séparée par “ : ”
            groupe=$(echo $ligne | cut -d: -f3) # groupe reçoit la 3eme partie de la ligne séparée par “ : ”
            login=$pre"."$nom
            mdp=$(pwgen 5 1) #on génère un mot de passe aléatoire avec l’outil pwgen (5 étant le nombre de caractères, 1 étant le nb de mot de passe a générer)
            echo $mdp
            echo $login":"$mdp >> comptes.txt # on écrit le login et mot de passe dans comptes.txt
            useradd -d /home/$login -m -s /bin/false -g $groupe $login #création du compte unix : création du /home de l'utilisateur, avec interdiction de se connecter en ligne de commande via le  "/bin/false", avec ajout du groupadd sur la même ligne de commende via le "-g", le "-s" permet le mode silencieux de la commande
            echo -e "$mdp\n$mdp" | smbpasswd -a -s $login # création compte samba avec affectation du echo dans la commande smbpasswd "\n" permet le retour chariot double de smbpasswd
         done < $fich # iteration pour passer à la ligne suivante
else # sinon

echo "fichier $1 non trouve" # affiche message d'erreur lorsque l'on ne trouve pas le fichier ou se trouve les “prenom:nom:groupe”

fi


Par contre, une question on sait jamais si tu en as d'autre,

je suis actuellement à la recherche d'un script qui me supprime mon utilisateur samba

en gros un script pour les commandes suivantes :


rm -R /hom/nomdemonutilisateur
userdel nomdemonutilisateur

enfin je voudrais savoir si il est possible de faire un script qui me permettra d'effectuer une recherche sur mon fichier comptes.txt et qui supprimera l'utilisateur en question si je veux utiliser comptes.txt comme fichier de liste des utilisateurs créés.


Je m'explique

comptes.txt est un fichier texte généré lors de la création des utilisateurs via le script ( voir si dessus ). lorsque je créer l'utilisateur Marine Dupond, cela ajoute le login + le mdp de cette utilisateur dans ce fichier.
on sait que le login=$pre"."$nom ce qui signifie que le login de l'utilisateur serra par exemple Marine.Dupond.
Je souhaite dans ce nouveau script de suppression, en plus de supprimer l'utilisateur Unix et son répertoire home, le supprimer aussi de la liste des utilisateurs créés via comptes.txt.

Je ne sais malheureusement pas du tout par ou commencer.

voici actuellement mon idée pour la structure de mon algo

parametreN1 = nom recherché pour suppression (Marine Dupond) il faudrait ici donner le login (Marine.Dupond) pour ne pas supprimé TOUT les Dupond(s)

1. ouvrir + lire fichier
2. rechercher la ligne ou il y a "Marine.Dupond"
3. suppression de la ligne ( la je ne sais pas du tout comment envisager la chose, car si je supprime la ligne il faut aussi que je replace toute les ligne suivante en les faisant remonter ? non ?
4. enregistrer + quitter
5. Affichage = erreur si non trouve = réussite si nom supprimé


Merci d'avance pour vos idées

_________________
Image
Voir le profil de l'utilisateurEnvoyer un message privé
Nochancexp
Forumeur fréquent
Forumeur fréquent


Post-BTS
Sexe: Sexe:Masculin
Messages: 74
Localisation: Paris

MessagePosté le: Mar 05 Mai 2009 - 11:07 Répondre en citantRevenir en haut

Voici actuellement mon ébauche
malheureusement cela ne supprime rien, mon "sed" est il correct ?
merci par avance



Code:
#!/bin/bash
# SCRIPT creautil.sh
# ================
# Suppression automatique d'un compte créé + sa suppression du fichier comptes.txt
# appel : ./delutil.sh [comptes.txt] [compteaSUPPRIMER]
# ================

fich=$1 # fichier pointe vers le premier parametre.


if [ $# = 2 ]
   then
      if [ -e $1 ] # on vérifie si le fichier entré en paramêtre existe
         Then
                      login=$(echo $ligne | cut -d: -f1) # login reçoit la 1ere partie de la ligne séparée par “ : ”
            sed '/$login/d' $fich # suppression de la ligne contenant la chaîne $login
            userdel $login # supprime l'utilisateur $login au niveau UNIX systeme
            rm -R /home/$login # supprime le repertoire personnel de l'utilisateur dans /home
      else
         echo "fichier $1 non trouve" # affiche message d'erreur lorsque l'on ne trouve pas le fichier
      if
else
   echo "L'utilisateur $2 non trouve" # cas d'erreur l'utilisateur n'existe pas dans le fichier comptes.txt
fi

_________________
Image
Voir le profil de l'utilisateurEnvoyer un message privé
zepeto
Newbiiiie
Newbiiiie




Messages: 2

MessagePosté le: Lun 07 Juin 2010 - 23:45 Répondre en citantRevenir en haut

Bonsoir,

Lorsque j'exécute le script de création d'utilisateur samba il me retourne ça :

Citation:
srvdebian:~# ./creautil.sh
./creautil.sh: line 28: $fich: ambiguous redirect


Quelqu'un à une idée pour résoudre ce problème ?
Merci par avance.
Voir le profil de l'utilisateurEnvoyer un message privé
zepeto
Newbiiiie
Newbiiiie




Messages: 2

MessagePosté le: Sam 12 Juin 2010 - 11:03 Répondre en citantRevenir en haut

Problème résolu en mettant le chemin du dossier plutôt que $fich pour faire bouclé.

Je vous met à disposition le srcipt de suppression d'utilisateur à partir du fichier comptes.txt :
Citation:

# !/bin/bash
# SCRIPT deleutil.sh
# ================
# Suppression automatique des comptes d'apres le fichier comptes.txt
# appel : ./deleutil.sh [comptes.txt]
# ================

fich=$1 # fichier pointe vers le premier paramètre

if [ -e $1 ] # on vérifie si le fichier entré en paramêtre existe
then alors
while read ligne # Boucle TanQue pour parcourir chaque ligne
do # faire
util=$(echo $ligne | cut -d: -f1) # util reçoit la 1ere partie de la ligne séparée par " : " qui correspond à l'utilisateur à supprimer
login=$util
userdel $login # Suppression de l'utilisateur
rm -R /srv/samba/home/$login # Suppression du répertoire personnel de l'utilisateur
done < /root/comptes.txt # iteration pour passer à la ligne suivante
else # sinon

echo "fichier$1 non trouvé" # affiche message d'erreur lorsque l'on ne trouve pas le fichier comptes.txt

fi
Voir le profil de l'utilisateurEnvoyer un message privé
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum