Auteur |
Message |
Nochancexp
Forumeur fréquent
Sexe:
Messages: 74
Localisation: Paris
|
Posté le:
Lun 04 Mai 2009 - 13:43 |
|
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. |
_________________
|
|
|
|
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
Sexe:
Messages: 74
Localisation: Paris
|
Posté le:
Lun 04 Mai 2009 - 16:38 |
|
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 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 |
_________________
|
|
|
|
Nochancexp
Forumeur fréquent
Sexe:
Messages: 74
Localisation: Paris
|
Posté le:
Lun 04 Mai 2009 - 16:40 |
|
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. ) |
_________________
|
|
|
|
Nochancexp
Forumeur fréquent
Sexe:
Messages: 74
Localisation: Paris
|
Posté le:
Lun 04 Mai 2009 - 16:55 |
|
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. |
_________________
|
|
|
|
donkey_kong
Résident du forum
Sexe:
Messages: 323
Localisation: localhost
|
Posté le:
Lun 04 Mai 2009 - 18:56 |
|
Oh c'est mon script que j'avais posté dans un autre topic
Ca fait plaisir de voir qu'il sert |
|
|
|
|
Nochancexp
Forumeur fréquent
Sexe:
Messages: 74
Localisation: Paris
|
Posté le:
Mar 05 Mai 2009 - 09:38 |
|
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
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 |
_________________
|
|
|
|
Nochancexp
Forumeur fréquent
Sexe:
Messages: 74
Localisation: Paris
|
Posté le:
Mar 05 Mai 2009 - 11:07 |
|
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 |
|
_________________
|
|
|
|
zepeto
Newbiiiie
Messages: 2
|
Posté le:
Lun 07 Juin 2010 - 23:45 |
|
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. |
|
|
|
|
zepeto
Newbiiiie
Messages: 2
|
Posté le:
Sam 12 Juin 2010 - 11:03 |
|
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 |
|
|
|
|
|
|