Problème script

Résolu
supra250589 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai un problème avec mon script je suis sous Fedora 12 et je ne trouve pas l'erreur, voila ce qu'il m'affiche:

Un problème a été rencontré, le dossier existe peut-être déjà
Entrée Mysql créée pour
Un problème a été rencontré, le dossier existe peut-être déjà
./insertdb.sh: line 44: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 45: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 46: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 47: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 48: /etc/vsftpd/vsftpd_user_conf/: est un dossier
Dossier docs créé dans
Droits attribués a ftp pour docs
Entrée Mysql créée pour E
Entrée Mysql créée pour
Un problème a été rencontré, le dossier existe peut-être déjà
./insertdb.sh: line 44: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 45: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 46: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 47: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 48: /etc/vsftpd/vsftpd_user_conf/: est un dossier
Un problème a été rencontré, le dossier existe peut-être déjà

et voila le script:

#!/bin/bash

#Creation de la variable pour la condition while (nombre de ligne du fichier)
nombreuser='wc -l mdp_prof.txt | cut -d' ' -f1'

#Creation groupe
cd /var/ftp
if mkdir profs 2> /dev/null
then
chmod -R 777 profs
echo "Crétion du répertoire profs réussie"
else
echo "Un problème a été rencontré, le dossier existe peut-être déjà"
fi
cd profs

i=1

while [ $i -le $nombreuser ]

do

#Creation des variables pour le fichier
nom=$(gawk -F"," 'NR == i {print $1}' /tmp/mdp_prof.txt)
login=$(gawk -F"," 'NR == i {print $3}' /tmp/mdp_prof.txt)
mdp=$(gawk -F"," 'NR == i {print $4}' /tmp/mdp_prof.txt)
login_elev="E"$nom
mdp_elev="E"$nom

#Creation utilisateur
mysql -u root -p17ind76 -e"INSERT INTO vsftpd.users (login,password,active) VALUES('$login',md5('$mdp'),1)" && echo "Entrée Mysql créée pour $nom"


#Creation du dossier utilisateurs
cd /var/ftp/profs
if mkdir /var/ftp/profs/$nom 2> /dev/null
then
echo "Dossier $nom créé"
chown ftp:ftp /var/ftp/profs/$nom && echo "Droits attribués a ftp pour $nom"
else
echo "Un problème a été rencontré, le dossier existe peut-être déjà"
fi
#Droit utilisateurs
echo "local_root=/var/ftp/profs/$nom" > /etc/vsftpd/vsftpd_user_conf/$login
echo "write_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/$login
echo "anon_upload_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/$login
echo "anon_mkdir_write_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/$login
echo "anon_other_write_enable=YES" >> /etc/vsftpd/vsftpd_user_conf/$login

#Creation du dossier élève associé

cd /var/ftp/profs/$nom
if mkdir /var/ftp/profs/$nom/docs 2> /dev/null
then
echo "Dossier docs créé dans $nom"
chown ftp:ftp /var/ftp/profs/$nom/docs && echo "Droits attribués a ftp pour docs"
else
echo "Un problème a été rencontré, le dossier existe peut-être déjà"
fi

#Creation du compte eleve associé

mysql -u root -p17ind76 -e"INSERT INTO vsftpd.users (login,password,active) VALUES('$login_elev',md5('$mdp_elev'),1)" && echo "Entrée Mysql créée pour $login_elev"

echo "local_root=/var/ftp/profs/$nom/docs" > /etc/vsftpd/vsftpd_user_conf/$login_elev
echo "write_enable=NO" >> /etc/vsftpd/vsftpd_user_conf/$login_elev
echo "anon_upload_enable=NO" >> /etc/vsftpd/vsftpd_user_conf/$login_elev
echo "anon_mkdir_write_enable=NO" >> /etc/vsftpd/vsftpd_user_conf/$login_elev
echo "anon_other_write_enable=NO" >> /etc/vsftpd/vsftpd_user_conf/$login_elev

((i++))

done

merci d'avance!
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

J'ai l'impression que tes soucis viennent des déclarations de tes variables, elles sont vides ;-((

Dossier docs créé dans ???
Droits attribués a ftp pour docs
Entrée Mysql créée pour E???
Entrée Mysql créée pour ???

;-((
0
supra250589 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
salut,

merci de répondre aussi vite!

pourtant dans le fichier mdp_prof.txt il y a bien tout (pas d'espace, pas de mot identique, bien séparé par des virgule)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Peut être mais en attendant tes variables sont vides, d'où les erreurs ;-((

Commence par revoir la définition de tes variables :

#Creation des variables pour le fichier
nom=$(gawk -F"," 'NR == i {print $1}' /tmp/mdp_prof.txt)
echo "${nom}"
login=$(gawk -F"," 'NR == i {print $3}' /tmp/mdp_prof.txt)
echo "${login}"
mdp=$(gawk -F"," 'NR == i {print $4}' /tmp/mdp_prof.txt)
echo "${mdp}"
login_elev="E"$nom
echo "${login_elev}"
mdp_elev="E"$nom
echo "${mdp_elev}" 
0
supra250589 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
voila ce qu'il m'affiche^^:

Un problème a été rencontré, le dossier existe peut-être déjà



E

Entrée Mysql créée pour
Un problème a été rencontré, le dossier existe peut-être déjà
./insertdb.sh: line 49: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 50: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 51: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 52: /etc/vsftpd/vsftpd_user_conf/: est un dossier
./insertdb.sh: line 53: /etc/vsftpd/vsftpd_user_conf/: est un dossier
Dossier docs créé dans
Droits attribués a ftp pour docs
Entrée Mysql créée pour E



E
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Ben tu le vois tes variables sont vides à l'exception du "E" de :

login_elev="E"$nom
mdp_elev="E"$nom

Mais aucune trace de la variable "${nom}" ;-((

Crées un script juste avec :

#! /bin/bash
#Creation des variables pour le fichier
nom=$(gawk -F"," 'NR == i {print $1}' /tmp/mdp_prof.txt)
echo "nom = ${nom}"
login=$(gawk -F"," 'NR == i {print $3}' /tmp/mdp_prof.txt)
echo "login = ${login}"
mdp=$(gawk -F"," 'NR == i {print $4}' /tmp/mdp_prof.txt)
echo "mdp = ${mdp}"
login_elev="E"$nom
echo "login eleve = ${login_elev}"
mdp_elev="E"$nom
echo "mdp eleve = ${mdp_elev}"

Et affiche le résultat..
0
supra250589 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
il m'affiche:


E



et c tout
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Donc y'a un souci au niveau de la récupération de tes variables ;-((

Peux-tu faire un copier coller de ton fichier mdp_prof.txt ?
A défaut (confidentialité), montrer un exemple concret de sa structure et de ce que tu veux récupérer...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
supra250589 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
arf effectivement je ne peux te donner le contenu du fichier donc je vais te faire un exemple:

TITI,TOTO,tito,1230

TITI = nom
TOTO= prénom
tito = login
1230 = mdp

sachant qu'il y a 300 ligne comme ca
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Je crois que l'erreur vient de "NR == i" c'est sensé représenter quoi le "i" ???

Enlèves- le ;-))
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
sachant qu'il y a 300 ligne comme ca
Ben je ne vois pas de boucle dans ton script !!??

Oups je n'avais pas fais gaffe ;-((
Ne pas tenir compte de cette remarque ;-[
0
supra250589 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
il me dit erreur de syntaxe ;)
mai j'ai penser plusieur fois que le problème venait de cette commande ^^
0
supra250589 Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
si je remplace NR == 1 c bon mais il ne fait que le premier utilisateur 300 fois^^, il ne passe pas au 2ème puis au 3ème etc
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Remplace chaque occurrence de NR == i par :

gawk -F"," 'NR == '"${i}"' {print 
0