Vérifier présence fichier dans 1 répertoire - Shell/Batch - Programmation
Marsh Posté le 13-08-2008 à 11:32:38
pour la suppression j'ai trouver ceci
sed '$d' mon_fichier.txt
mais le truc c'est que quand j'ouvre mon fichier j'ai toujours les 3 lignes
Marsh Posté le 13-08-2008 à 14:05:18
alandon a écrit : Bonjour, |
Bah a moin de modif ton linux je ne voit pas comment tu peux te passer de boucle.
Et les boucles en Bash c'est vraiment moche. Tu doit absolument le faire en Bash ?
Pour le faire de manière propre faudrait le faire en C++ mais ca ne seras pas simple.
Sinon il y a une autre méthode. Doit tu absolument connaître en temps réel ces modifications ou 1 mn après ca peux être bien ? Si ca peux correspondre un petit script bash et un cron toute les mn devrait faire l'affaire. (en gros ton script serait executé toute les minutes)
Marsh Posté le 13-08-2008 à 19:19:15
Merci d'avoir répondu.
Ce n'est pas du temps réel donc 1mn après c'est parfait.
L'idée du cron me plait bien.
Ce qui me pause le plus de problème c'est que j'ai aucune notions en bash.
Marsh Posté le 13-08-2008 à 19:34:50
Heu la on va pas te coder ton script, il faut que tu trouve des tutos sur le net
Marsh Posté le 14-08-2008 à 09:39:14
alandon a écrit : Ce qui me pause le plus de problème c'est que j'ai aucune notions en bash. |
http://fr.lang.free.fr/cours/Shell_v2.0.pdf
C'est vrai que l'idée "script qui fait le traitement une fois" + "j'intègre le script dans un cron qui me le lance tous les "x" temps" est plus sympa que l'idée de "script qui tourne en boucle et qui va me charger mon système inutilement". Te faudra donc
1) créer ton script et le tester
2) intégrer ton script dans le cron
Et fais attention à tes termes. Dans ton premier post du parles de batch. Même si ce terme (issu de "batch processing" ) correspond à ton problème, il est généralement synonyme de script windows (parce que l'extension d'un tel script sous windows est ".bat" ). En lisant ton premier post j'ai d'abord cru que tu cherchais à faire un script windows. C'est pas de ta faute car ce terme "batch" devrait être global à tous les programmeurs mais malheureusement il est maintenant tombé du coté de windows. Faut le savoir...
h4rold a écrit : Bah a moin de modif ton linux je ne voit pas comment tu peux te passer de boucle. |
D'abord il n'y a rien de moche à faire une boucle en bash. Par ailleurs je peux très bien te faire un compteur de 1 à n en bash absolument sans faire de boucle (et bien entendu n non connu à l'avance) et enfin il n'y a pas que le C++ pour être propre (t'as aussi C, Perl, Python, Ruby) mais le bash est quand-même l'outil le plus approprié pour un travail d'administration/surveillance comme c'est le cas ici. Mais tout dépend bien sûr de ce qu'on appelle "propre"...
Marsh Posté le 28-08-2008 à 19:33:15
Je reviens à la charge parce que j'ai bossé dessus et donc j'ai des questions pour vous.
L'objectif a légèrement changé, je veux pouvoir détecter la présence de nouveau fichiers dans un répertoire, si fichier existe, on copie la liste des fichiers dans un .txt.
Ensuite on envoie cette liste de fichiers qui se trouvent dans le txt par mail à mon adresse.
Et au final, on bouge les fichiers dans un autre répertoire.
Voilà ce que ça donne:
Code :
|
J'aurais besoin d'aide, parce que j'ai fais un script avec d'autres bouts de codes que j'ai trouvé mais je ne comprend pas toutes les lignes exemple:
celle ci:
Code :
|
Son effet est bien celui que j'attendais, à savoir qu'au début j'avais ça:
Code :
|
et maintenant j'obtiens ceci:
Code :
|
et
à celle-là y'a une erreur dans le code, je suis quasi sûr, mais ça marche:
Code :
|
le problème c'est que mon script ne gère par les erreurs et quand j'ai pas de fichiers dans mon répertoire cible, j'ai un message d'erreur du type:
Code :
|
Dernière chose, je voulais que la date soit envoyé dans le mail mais je ne sais pas comment faire.
Marsh Posté le 31-08-2008 à 20:15:16
Salut ,
Il existe une commande en batch, pour détecter si un fichier existe ou non, je sais que ça répondra pas à ta question mais bon, sa peu aider les autres
Code :
|
*le rapport est créé sur le bureau
À bientot
Marsh Posté le 31-08-2008 à 20:43:49
comme tu l'a si bien dit, ça ne répond pas à ma question mais merci d'avoir relancé mon sujet en même temps.
Par contre, moi c'est du shell et non du batch.
Marsh Posté le 05-09-2008 à 20:12:16
alandon a écrit : Je reviens à la charge parce que j'ai bossé dessus et donc j'ai des questions pour vous. |
C'est bien "nouveaux" par rapport à ceux déjà notés dans ladite liste n'est ce pas ???
Code :
|
alandon a écrit : Ensuite on envoie cette liste de fichiers qui se trouvent dans le txt par mail à mon adresse. |
Code :
|
alandon a écrit : Et au final, on bouge les fichiers dans un autre répertoire. |
Code :
|
alandon a écrit : J'aurais besoin d'aide, parce que j'ai fais un script avec d'autres bouts de codes que j'ai trouvé mais je ne comprend pas toutes les lignes exemple:
|
Ben tu fais l'effort d'aller lire le man de la commande cut. La seule chose qui me paraisse bizarre, c'est que cette commande est redirigée dans un fichier (ça c'est ok) mais aussi dans un pipe => c'est idiot, le pipe ne recevra rien vu que tout est dans le fichier.
Moi j'aurais écrit
Code :
|
Ou alors il y a un détail qui m'échappe...
alandon a écrit : à celle-là y'a une erreur dans le code, je suis quasi sûr, mais ça marche:
|
Ben la gestion d'erreur c'est aussi un travail. Tu peux vérifier qu'une commande s'est bien exécutée grace à la variable "$?" qui, si elle contient 0, signifie que la dernière commande qui a été exécutée l'a bien été. Donc ça peut être un truc de ce style
Code :
|
Ou plus simplement
Code :
|
Ou encore plus simple (s'il n'y a qu'une commande à lancer en cas de succès)
Code :
|
alandon a écrit : Dernière chose, je voulais que la date soit envoyé dans le mail mais je ne sais pas comment faire. |
Code :
|
ou bien, si tu veux mettre la date et d'autres trucs avec
Code :
|
Maintenant, si, au lieu de piocher des bouts de codes auxquels tu pipe que dalle, tu commençais par lire le tuto que j'ai mentionné plus haut ??? 1) tu gagnerais du temps (même si tu commences par en perdre pour lire tu le regagneras amplement par la suite) et 2) tu éviterais d'en faire perdre aux bonnes volontés du fofo...
Marsh Posté le 13-08-2008 à 11:04:51
Bonjour,
Je souhaiterais faire un petit shell qui me permettrait de détecter automatiquement l'édition, l'ajout ou la suppression d'un ou des fichiers présents dans un répertoire.
Je voudrais que le script me récapitule et m'envoie toutes ces informations dans un mail dès qu'il y a du nouveau dans ce répertoire.
Le shell doit donc tourner en boucle ?
N'ayant pas de notions en programmations, pourriez-vous me donnez quelques pistes pour faire ce shell .
Merci
Message édité par alandon le 28-08-2008 à 20:12:11