Forum Programmation.shell déclencher le traitement d'un fichier suite à un FTP

Posté par  (site web personnel) .
Étiquettes : aucune
0
8
juin
2007
Bonjour

J'ai une machine distante sous XP (désolé !) qui copie sur une machine Linux par FTP un fichier à des heures variables. Pour traiter ce fichier, à part regarder régulièrement dans la directory en question (normalement vide) si il y a un fichier, est-ce qu'il y a une méthode plus subtile pour déclencher le traitement dès la fin du transfert ?

Merci
  • # J'ai jamais tenté, juste une idée

    Posté par  . Évalué à 2.

    C'est juste une idée qui me vient à l'esprit. Si le client ftp windows se déconnecte proprement après le tranfert, par exemple, tu devrait avoir une ligne dans les logs du serveurs. Donc l'idée serait de faire un petit script (appelons le "/usr/local/bin/plop") qui appelle ton traitement à chaque fois qu'il voit une ligne en entrée standart.

    puis tu lances le tout comme ça :

    tail -f /var/log/tonserveurftp.log | grep "truc qui matche la déconnection du windows" | plop

    il faut bien sur que le fichier de log soit lisible par l'utilisateur qui doit effectuer la commande.
  • # ssh?

    Posté par  . Évalué à 3.

    Je suppose que l'envoi du fichier est automatisé via un script et que tu as acces a la machine windows.

    Si tel est le cas pourquoi ne pas rajouté a la fin de ce script un appel a un client ssh qui ira enclenché un autre script sur la machine linux?

    Pour le client ssh tu peux utiliser plink [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html] . Ensuite il te suffirai de jouer avec les clés ssh pour ne pas avoir a taper le mot de passe (sinon plink a une option permettant de lui rentrer le mot de passe mais le laisser en clair sur la machine c'est moche)
  • # dnotify

    Posté par  . Évalué à 5.

    Sinon, tu peux éventuellement jeter un oeil du côté du programme dnotify.
    Il permet, normalement, de scruter les changements effectués dans un dossier et de lancer une action dès création/modification/... d'un fichier par ex.
  • # Xinetd

    Posté par  (site web personnel) . Évalué à 4.

    Déjà fait ce genre de truc, avec proftpd et xinetd. En gros, un nouveau serveur ftp accepte chaque nouvelle connexion, et on lance un script dès qu'il rend la main.

    dans la conf xinetd :

    service ftp
    {
    disable = no
    flags = REUSE
    socket_type = stream
    wait = no
    user = root
    server = /usr/local/bin/lance-ftp.sh
    log_on_success += DURATION USERID
    log_on_failure += USERID
    bind = monnomdhote
    }


    Et le fichier shell /usr/local/bin/lance-ftp.sh correspondant :

    #!/bin/sh
    /usr/sbin/proftpd; /usr/local/bin/apres-ftp.sh


    Dans le script appelé après la fin d'une connexion, il faut vérifier si des fichiers ont été déposés par contre, mais il n'est lancé que lorsqu'un utilisateur FTP se déconnecte (pas dis que c'était optimal non plus).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.