IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Tache cron pour renommer fichier


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut Tache cron pour renommer fichier
    Bonjour

    Je ne sais pas si je poste au bon endroit... Si non, j'en suis dsl.

    Je cherche à faire une tâche cron pour mettre sur un serveur mail.
    N'ayant jamais utilisé ce type de code, j'aurais besoin d'un peu d'aide.

    J'utilise un logiciel de gestion qui permet d'envoyer des fichiers directement par mail avec mon adresse mail (après l'avoir configuré avec le serveur de ma messagerie).
    Ces mails, je les recevais en copie dans la boîte de réception de ma boîte mail.
    Cela m'embêtait un peu car c'était des mails que j'envoyais donc je ne trouvais pas logique de les avoir avec les mails reçus.
    Pour éviter cela, j'ai réussi à créer un filtre côté serveur pour faire en sorte que tous les mails reçus avec mon adresse soient directement placés dans les mails envoyés.
    Maintenant mon petit problème est que tous ces mails restent en "non lu". J'ai contacté le service client de mon fournisseur de serveur mail, et il m'a expliqué que chaque mail correspond à 1 fichier et que la différence entre un message lu et un message non lu, c'est juste que le message lu a été renommé en ajoutant la lettre "S" à la fin du nom de fichier. Il m'a donc dit de faire une tâche cron pour faire cela mais n'a pas pu me donner le code.

    Quelqu'un serait-il faire ce code afin d'ajouter un "S" à la fin d'un nom de fichier qui ne l'a pas déjà, et dans un dossier précis (celui des messages envoyés) ?

    Merci à vous

    Cordialement

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour

    cron c'est juste un automate. Son rôle est de lancer des jobs à la date demandée. Il ne se préoccupe absolument pas de la nature du job. Il le lance et t'envoie le résultat par mail (puisque le job est lancé en automatique)

    Donc 2 étapes
    1. tu écris le script qui renomme les fichiers selon ton goût
    2. une fois le script écrit et testé, tu le places dans le cron


    Pour écrire un cron il te faut simplement créer un fichier nommé "/var/spool/cron/crontabs/$LOGNAME". C'est un simple fichier texte qui contiendra les tâches à lancer (une tâche par ligne).
    Cette tâche sera décrite de la façon suivante
    • mois du lancement (entre 1 et 12)
    • jour du lancement (entre 1 et 31)
    • heure du lancement
    • minute du lancement
    • jour de la semaine du lancement (0=dimanche)
    • script à lancer

    Exemple 4 12 16 15 2 toto ce qui signifie "à 16h15 de chaque mardi, et aussi à 16h15 le 12 avril, lancer le script toto"

    On peut aussi utiliser des jokers shells pour simplifier la syntaxe. Exemple 2,4,6,8,10,12 * 16 ?0 * toto ce qui signifie "lancer le script toto à 16h10, 16h20, 16h30, 16h40 et 16h50 tous les jours des mois pairs (le "étoile" pour le jour du mois signifiant "tous les jours" mais le "étoile" pour le jour de la semaine étant un cas particulier signifiant "ne pas tenir compte de ce champ")

    Une fois le fichier écrit, il faut le faire prendre en compte. Soit tu arrêtes et relances le cron, soit tu lui envoies un kill -HUP. Ou alors tu utilises la commande crontab -e qui édite le fichier et qui se charge de le faire prendre en compte.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut
    Merci pour ta réponse.

    Ok donc ça c'est l'architecture du fichier en fait ?
    Et concernant le script, c'est quel langage qu'il faut utiliser ? Du PHP ?

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par arnlig3550 Voir le message
    Ok donc ça c'est l'architecture du fichier en fait ?
    Oui, c'est l'architecture du fichier décrivant les tâches à lancer. Après tu auras plus de détail sur les tutoriels cron du net.

    Citation Envoyé par arnlig3550 Voir le message
    Et concernant le script, c'est quel langage qu'il faut utiliser ? Du PHP ?
    Le langage que tu veux. Moi je pensais plutôt à un shell (bash, ksh, zsh selon celui qui est par défaut sur ton linux) assez adapté au renommage des fichiers (quand tu tapes une commande à la main celle-ci est analysée et traitée par le shell de la console dans laquelle tu tapes ta commande donc si tu sais renommer à la main tu peux parfaitement le coder dans un script shell) mais si tu te sens de le faire en php, perl, python ou pourquoi pas en C peu importe. La base c'est que ton script (programme) fonctionne de façon individuelle pour ensuite le placer dans un cron.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut
    Bonjour

    Merci pour ta réponse.

    Ce n'est pas pour mettre sur un Linux mais sur le Cpanel de mon hébergeur O2switch.
    Voici un lien qui explique comment faire, mais je sèche complètement pour la partie script... https://faq.o2switch.fr/hebergement-...el/taches-cron

    J'ai cherché "php renommer fichier" mais je ne trouve pas ce dont j'ai besoin car dans ce que je trouve il faut connaître le nom du fichier d'origine que je veux renommer et le nouveau nom que tu veux lui donner.
    Mais dans mon cas je ne connais ni l'un ni l'autre, je veux juste ajouter un "S" à la fin de chaque nom de fichier...

    Merci pour votre aide

    Arnaud

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    un problème XY ?

    J'utilise un logiciel de gestion qui permet d'envoyer des fichiers directement par mail avec mon adresse mail (après l'avoir configuré avec le serveur de ma messagerie).
    soit.
    Ces mails, je les recevais en copie dans la boîte de réception de ma boîte mail.
    pourquoi ?


    ce que je comprends, c'est que
    le logiciel envoie des mails (tu ne dis pas à qui !?)
    et envoie aussi une copie sur ta boîte mail.

    ça pourrait n'être qu'une histoire de configuration du logiciel, pour qu'il cesse de te mettre en carbon copy ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut
    Bonjour

    Désolé je ne comprends pas la question "un problème XY ?"

    Ces mails sont envoyés au clients et j'ai activé volontairement l'envoi d'une copie sur mon adresse mail car je veux une trace dans ma boîte mail des mails envoyés avec ce logiciel.

    Arnaud

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par arnlig3550 Voir le message
    Désolé je ne comprends pas la question "un problème XY ?"
    C'est le nom donné à un souci de communication. Un interlocuteur demande une solution pour Y, qu'il imagine adapté pour résoudre X au lieu de demander directement la solution pour X.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut
    Ah ok, je ne connaissait pas.

    Donc non ce n'est pas ça car l'envoi de la copie est volontaire, mais je voudrais qu'elle aille dans le dossier "messages envoyés" de ma boite mail, chose que j'ai réussi à faire, et qu'elle soit en "lu".
    C'est sur cette 2ème chose que je bloque.

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    comme dit plus haut anacron n'est pas l'outil adapté à ce genre de tâche.

    ici, il s'agit d'exécuter une commande quand un fichier arrive dans le répertoire de tes mails envoyés, et pour ça il existe inotifywait.
    tu peux le lancer au démarrage de la machine pour que ça tourne en tâche de fond et que ça exécute la commande nécessaire pour renommer les fichiers qui arrivent dans une répertoire donné.

    edit: et comme dit plus haut :
    Ce n'est pas pour mettre sur un Linux mais sur le Cpanel de mon hébergeur O2switch.


    le Cpanel n'a-t-il pas une option de surveillance/monitoring d'un répertoire donné pour y exécuter des tâches "à la volée" ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    comme dit plus haut anacron n'est pas l'outil adapté à ce genre de tâche.
    Euh moi je ne l'ai pas dit. J'ai juste dit que cron (ou anacron qui est son petit frère) n'était qu'un automate donc n'était pas dédié à une tâche particulière et pouvait automatiser n'importe quoi. Donc qu'il fallait distinguer le script qui fait le travail de cron qui permet de planifier le lancement du script. Ca ne veut pas dire qu'il n'est pas adapté (mais cela ne veut pas dire non plus qu'il est adapté). Bref c'est chacun qui voit si ça lui convient ou pas.

    Ceci dit, inotifywait lui est peut-être effectivement un outil plus adapté.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Citation Envoyé par Sve@r
    Citation Envoyé par NBaH
    comme dit plus haut anacron n'est pas l'outil adapté à ce genre de tâche.
    Euh moi je ne l'ai pas dit.
    je l'ai pensé tellement fort, que j'ai pensé que cela avait été dit.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut
    Merci pour vos réponses.

    Donc si je comprends bien, vous partiriez sur "inotifywait".
    D'après ce que je peux lire sur cette fonction, c'est que celle-ci pourrait surveiller l'arrivée d'un mail non lu pour le mettre en lu, c'est ça ?

    Bien que je n'y connais strictement rien en code, est-ce qu'un simple script qui dit par exemple : "tous les jours à 23h, tous les mails non lus de ce dossier seront renommés en lu" ne serait pas plus simple que de faire une "surveillance" non stop ?
    Créer ce type de tache me suffirait amplement.

  14. #14
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par arnlig3550 Voir le message
    Donc si je comprends bien, vous partiriez sur "inotifywait".
    Perso je ne connais pas cet outil, mais j'imagine vu le nom ce que peut être sa fonction.

    Citation Envoyé par arnlig3550 Voir le message
    Bien que je n'y connais strictement rien en code, est-ce qu'un simple script qui dit par exemple : "tous les jours à 23h, tous les mails non lus de ce dossier seront renommés en lu" ne serait pas plus simple que de faire une "surveillance" non stop ?
    C'est là que tu n'as pas compris le cron. Il permet de ne pas se préoccuper, dans le script, de la date. Le script se contente de tout renommer et c'est le cron qui se charge de l'appeler tous les jours à 23h
    * * 23 0 * renomme.sh dans le fichier crontab.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut
    Si si j'ai compris le système du cron, mais il me faut quand même un script qui serait peut-être plus simple à mettre en place que la fonction "inotifywait", qu'en pensez vous ?

  16. #16
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    j'ai fait quelques recherches rapides sur cpanel, et il semble qu'il soit possible d'y ajouter un module inotify.
    j'imagine que ça fonctionnera comme inotifywait et déclenchera une commande (ou un script) à l'arrivée d'un fichier dans le répertoire.

    est-ce qu'un simple script qui dit par exemple : "tous les jours à 23h, tous les mails non lus de ce dossier seront renommés en lu" ne serait pas plus simple que de faire une "surveillance" non stop ?
    le truc, c'est que si tu lis tes mails à 22h, les messages reçus dans "envoyer" n'auront pas été mis en "lu".
    et c'est bien ça que tu veux corriger, et ça, quelque soit l'heure de consultation de ta boîte mail.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut
    En effet c'est ce que je veux corriger.
    En revanche ce n'est pas grave si le script n'a pas encore été lancé quand je consulte mes mails. Ce que je veux c'est simplement éviter que le nombre de mail non lu affiché à côté de "Messages envoyés" cesse d'augmenter, et donc qu'il soit mit à 0 une fois par jour me suffit

  18. #18
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par arnlig3550 Voir le message
    Si si j'ai compris le système du cron, mais il me faut quand même un script qui serait peut-être plus simple à mettre en place que la fonction "inotifywait", qu'en pensez vous ?
    Tout à fait. Je l'ai écrit dans la première étape de mon premier post : quoi que tu décides, il te faut à la base un script qui se charge de renommer les fichiers.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #19
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 25
    Points
    25
    Par défaut
    Je vais prendre la solution la plus simple.
    Faut-il que j'ouvre un autre sujet pour faire le script ou vous savez faire ?

  20. #20
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par arnlig3550 Voir le message
    Faut-il que j'ouvre un autre sujet pour faire le script ou vous savez faire ?
    Je ne suis pas certain de comprendre. Tu écris le script (ici ça ira). Ensuite on te dira ce qui peut être amélioré ou corrigé mais en aucun cas on te l'écrira.
    Mis à part ce petit rappel, pour répondre à ta question oui on sait écrire un script qui renomme les fichiers d'un répertoire.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Requête pour renommer fichier
    Par hkaidi91 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/12/2019, 09h43
  2. script pour renommer fichier
    Par hugoashka dans le forum Macros et VBA Excel
    Réponses: 54
    Dernier message: 20/04/2017, 09h31
  3. Réponses: 2
    Dernier message: 01/03/2014, 10h19
  4. Tâches cron pour backup
    Par heyyo1 dans le forum Débuter
    Réponses: 1
    Dernier message: 24/07/2010, 18h42
  5. Aide pour renommer fichiers avec .bat
    Par bobsapp dans le forum Windows
    Réponses: 6
    Dernier message: 21/03/2007, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo