Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/09/2008, à 11:49

Delcano

[resolu]presence de fichiers dans repertoires

Bonjour
je suis un peu débutant en Linux et en programmation
voici mon problème:
j'ai installé un serveur ftp avec plusieurs utilisateurs avec chacun un dossier "envoyer" et un dossier "recevoir" (vu de leur client ftp)
ils peuvent donc m'envoyer des fichiers dans leur dossier envoyer et je voudrais créer un script qui serais lancé par un cron et qui vérifierais périodiquement la présence d'un fichier dans ces répertoires et m'avertirais genre vous avez x fichiers de user1
j'ai cherché avec des commandes ls et autre mais sans resultat.
Pouvez-vous m'aider
Merci.

Dernière modification par Delcano (Le 26/09/2008, à 17:14)

Hors ligne

#2 Le 26/09/2008, à 13:20

tiky

Re : [resolu]presence de fichiers dans repertoires

Tu peux lancer un script périodiquement avec un code similaire à celui-ci:

dir=ton_dossier
if [ `ls -l $dir | wc -l` -gt 0 ]
then
  echo "fichier(s) présent(s)"
else
  echo "aucun fichier"
fi

Tu peux également utilisé inotify du noyau Linux pour récupérer les événements sur le FS. Regarde le lien suivant:
http://www-128.ibm.com/developerworks/linux/library/l-inotify.html
C'est en langage C, je ne sais pas si c'est possible en bash ( il faudrait une commande pour donner une interface avec inotify ).

J'ai trouvé la commande inotifywait qui permet d'attendre tant qu'un événement inotify sur un dossier ou fichier ne sait pas produit:

inotifywait -m ton_dossier

Regarde le man pour plus d'option.

Dernière modification par tiky (Le 26/09/2008, à 13:50)


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#3 Le 26/09/2008, à 15:15

Delcano

Re : [resolu]presence de fichiers dans repertoires

Merci Tiky
cela ne fonctionne pas ou je me suis mal pris
j'ai fait un fichiers bash que j'ai rendu exécutable:
Code
#!/bin/sh
dir=/home/ftp/user1/envoyer/
if [ `ls -l $dir | wc -l` -gt 0 ]
then
  echo "fichier(s) présent(s)"
else
  echo "aucun fichier"
fi

et cela me retourne toujours : fichier(s) présent(s) sans m'indiquer le nombre et que le répertoir sois vide ou avec quelques fichiers

Hors ligne

#4 Le 26/09/2008, à 16:09

tiky

Re : [resolu]presence de fichiers dans repertoires

Je sais pourquoi hmm, quand le répertoire et vide, ls avec l'option l affiche le total, donc wc compte une ligne.
Correction du code:

dir=ton_dossier
if [ `ls -1 $dir | wc -l` -gt 0 ]
then
  echo "fichier(s) présent(s)"
else
  echo "aucun fichier"
fi

Le changement est subtile, sauras-tu le retrouver wink

Dernière modification par tiky (Le 26/09/2008, à 16:10)


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#5 Le 26/09/2008, à 16:25

Delcano

Re : [resolu]presence de fichiers dans repertoires

Désolé mais c'est pareil
il y à 3 fichiers dans mon répertoire et le résultat est le même

je crois avoir vu la différence entre les 2 scripts c'est le 1 à la place du l dans ls -l

Hors ligne

#6 Le 26/09/2008, à 16:46

tiky

Re : [resolu]presence de fichiers dans repertoires

Bah s'il y a 3 fichiers, il dit qu'il a des fichiers et s'il y a pas de fichier, il dit qu'il y en a pas. J'ai testé le script cette fois, il marche wink
Si tu veux avoir le nombre de fichiers, il faut le rajouter au script... ça me parait évident que le code n'affiche pas le nombre de fichiers là.

dir=ton_dossier
n=`ls -1 $dir | wc -l`
if [ $n -gt 0 ]
then
  action à faire s'il y a des fichiers
else
  action à faire s'il y en a pas.
fi
echo "$n fichier(s)"

Dernière modification par tiky (Le 26/09/2008, à 16:58)


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#7 Le 26/09/2008, à 17:13

Delcano

Re : [resolu]presence de fichiers dans repertoires

ok ça fonctionne
merci pour ton aide

Hors ligne