Problème script

Résolu
supra250589 Messages postés 52 Statut Membre -  
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!

5 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. supra250589 Messages postés 52 Statut Membre
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  3. supra250589 Messages postés 52 Statut Membre
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  4. supra250589 Messages postés 52 Statut Membre
     
    il m'affiche:

    E

    et c tout
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. supra250589 Messages postés 52 Statut Membre
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Je crois que l'erreur vient de "NR == i" c'est sensé représenter quoi le "i" ???

      Enlèves- le ;-))
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
    3. supra250589 Messages postés 52 Statut Membre
       
      il me dit erreur de syntaxe ;)
      mai j'ai penser plusieur fois que le problème venait de cette commande ^^
      0
    4. supra250589 Messages postés 52 Statut Membre
       
      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
    5. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Remplace chaque occurrence de NR == i par :

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