Problème script

Résolu/Fermé
supra250589 Messages postés 49 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 28 octobre 2010 - 5 oct. 2010 à 10:17
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 5 oct. 2010 à 11:58
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 oct. 2010 à 10:26
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 mardi 5 octobre 2010 Statut Membre Dernière intervention 28 octobre 2010
5 oct. 2010 à 10:31
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 oct. 2010 à 10:37
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 mardi 5 octobre 2010 Statut Membre Dernière intervention 28 octobre 2010
5 oct. 2010 à 10:45
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 oct. 2010 à 10:51
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 mardi 5 octobre 2010 Statut Membre Dernière intervention 28 octobre 2010
5 oct. 2010 à 10:59
il m'affiche:


E



et c tout
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 oct. 2010 à 11:02
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 mardi 5 octobre 2010 Statut Membre Dernière intervention 28 octobre 2010
5 oct. 2010 à 11:09
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 oct. 2010 à 11:11
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
Modifié par jipicy le 5/10/2010 à 11:36
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 mardi 5 octobre 2010 Statut Membre Dernière intervention 28 octobre 2010
Modifié par supra250589 le 5/10/2010 à 11:15
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 mardi 5 octobre 2010 Statut Membre Dernière intervention 28 octobre 2010
Modifié par supra250589 le 5/10/2010 à 11:26
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 oct. 2010 à 11:39
Remplace chaque occurrence de NR == i par :

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