Problème script

Résolu
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!

5 réponses

  1. Modérateur
    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 ???

    ;-((
    1. 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)
      1. Modérateur
        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}" 
    2. 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
      1. Modérateur
        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..
    3. il m'affiche:

      E

      et c tout
      1. Modérateur
        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...
    4. 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
      1. Modérateur
        Je crois que l'erreur vient de "NR == i" c'est sensé représenter quoi le "i" ???

        Enlèves- le ;-))
      2. Modérateur
        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 ;-[
      3. il me dit erreur de syntaxe ;)
        mai j'ai penser plusieur fois que le problème venait de cette commande ^^
      4. 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
      5. Modérateur
        Remplace chaque occurrence de NR == i par :

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