#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 , 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
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
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