Vous n'êtes pas identifié.
Bonjour, je commence avec bash et j'ai voulu créer un script pour automatiser la création de mes utilisateurs apache2 et proftpd.
#!/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
echo -e "$mdp\n$mdp" | useradd -d /home/ftp -g $groupe -s /bin/false $login #création du compte ftp
echo -e "$mdp\n$mdp" | htpasswd /var/www/passwdfile $login #création du compte apache
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
Lorsque j'exécute mon code il me dit que j'ai une erreur à la ligne en rouge ($fich ambigu)
j'ai chercher sur internet, j'ai tenté plusieurs manipulation sans succès.
Merci pour votre aide
Dernière modification par zepeto (07 Dec 2009 18:56:08)
Hors ligne
Salut,
le dièse de la couleur est forcément pris comme un commentaire, il faudra bien un caractère d'échappement...
Hors ligne
Concernant la couleur c'est réparer c'était juste une erreur d'inattention de ma par mais ce n'était pas le cas sur mon serveur.
Hors ligne
Hors ligne
Merci pour ton aide.
Après avoir apporter ta modification j'obtien ceci :
./creautil.sh: line 30: : Aucun fichier ou répertoire de ce type
ligne 30 il y a le fi
Si tu as une autre idée merci...
Dernière modification par zepeto (08 Dec 2009 19:39:40)
Hors ligne
tu as écris
if [ -e $1 ] # on vérifie si le fichier entré en paramêtre existe then
mais un if s'écrit:
if [ -e $1 ]; # on vérifie si le fichier entré en paramètre existe then
t'as oublié le ';' après le test [ ]
Hors ligne
Je n'ai jamais mis de ; à la fin d'un si en bash enfin peu être car je ne suis pas spécialiste.
Cependant cela ne change rien à mon message d'erreur.
J'ai rajouter des echo un peut partout dans mon code pour voir vers ou il s'arrête et j'ai l'impression qu'il bloque sur ma boucle...
Merci pour votre aide.
Hors ligne
J'ai dis une bêtise en fait.. le ';' est nécessaire seulement si le then est sur la même ligne..
if [...]; then
EDIT: bon j'ai testé alors ton script.. mais j'ai commenté les lignes pwgen, useradd, et htpasswd et la boucle fonctionne correctement.
Hors ligne