Script pour l'interception et la modification d'un flux ftp

Voilà:
j’ai un progiciel qui envoie par ftp, un fichier csv zippé que jevoudrais modifier au passage.
Pour être precis, le csv contient deux champs, code postal et ville, que je voudrais réecrire avec le CP et le Nom du chef lieu de canton de la ville concernée (je dispose d’une autre table de correspondance “CP/CP chef lieu+nom de chef lieu” en csv pour ça).
J’ai un proxy transparent frox qui redirige les flux ftp vers squid, et je me demandais si on ne pouvait pas faire ça en utilisant un redirecteur.
J’ai aussi la possibilité de faire en deux temps: depot en ftp sur un de mes serveurs, traitement, puis renvoi vers le site du prestataire.
Comment voyez vous la chose ?
Et surtout:
Je suis censé mettre en place une solution pour demain (au pire je ferais les premieres modifs à la main), or j’ai en parallèle la config de 8 machines, un domaine, un intranet sur 3 sites qui marche pas encore, et bien d’autre tâches qui me tombent dessus en mauvaise surprise sur un boulot à mi temps… Quelqu’un me ferait un bati de la moulinette, que je puisse la mettre en oeuvre sans plus trop avoir à reflechir ?
Thx

[quote=“MattOTop”]Voilà:
j’ai un progiciel qui envoie par ftp, un fichier csv zippé que jevoudrais modifier au passage.
Pour être precis, le csv contient deux champs, code postal et ville, que je voudrais réecrire avec le CP et le Nom du chef lieu de canton de la ville concernée (je dispose d’une autre table de correspondance “CP/CP chef lieu+nom de chef lieu” en csv pour ça).
J’ai un proxy transparent frox qui redirige les flux ftp vers squid, et je me demandais si on ne pouvait pas faire ça en utilisant un redirecteur.
J’ai aussi la possibilité de faire en deux temps: depot en ftp sur un de mes serveurs, traitement, puis renvoi vers le site du prestataire.
Comment voyez vous la chose ?
[/quote]
Ben moi j’y connais rien au proxy frox et je sais pas ce que c’est qu’un redirecteur.
Je le ferai comme ta deuxieme methode:
Tu envoies les docs sur ton serveur ftp appelons le ftp_traitement dans un repertoire $ftp_root/tache_CP/. C’est facilement scriptable en ftp tout ca [1]
Sur ftp_traitement tu fais une tache qui { scrute le repertoire tache_CP et des qu’il y a un ou plusieurs nouveau(x) fichier(s) CSV, tu lance une mobilette perl qui fait ton traitement [2].
Dès que le traitement est fini, hop tu envoie chez ton prestataire, avec un script [1] } (atomique ici)
Donc dans toute cette histoire il faut absolument verifier chaque sortie de commande.
Limite tu fais un script sur ftp_traitement qui se connecte sur ftp_prestataire et qui fait un ls ou meme un get dans /tmp et fait un diff sur le fichier recu et ton fichier préprocéssé par mobilette. A partir de ce moment la, tu sais que le fichier est uploadé, tu peux virer le /tmp.

Ensuite tu renomme le fichier dans $ftp_root/tache_CP en .bak
Le coup de le renommer c’est parceque j’ai peur d’effacer le fichier. Si jamais la mobilette ou l’upload vers le prestataire chie, faut retenter le coup plus tard. (là c a toi de voir)

[quote]
Et surtout:
Je suis censé mettre en place une solution pour demain (au pire je ferais les premieres modifs à la main), or j’ai en parallèle la config de 8 machines, un domaine, un intranet sur 3 sites qui marche pas encore, et bien d’autre tâches qui me tombent dessus en mauvaise surprise sur un boulot à mi temps… Quelqu’un me ferait un bati de la moulinette, que je puisse la mettre en oeuvre sans plus trop avoir à reflechir ?
Thx[/quote]
Ah oui je vois… Pas cool…

[1] Le ftp scriptable soit tu fait avec expect, soit avec ftp direc’
upload_ftp

#!/bin/sh [ $1x == "x" ] && { echo "Patate!"; exit; } [ $2x == "x" ] && { echo "Molusque!"; exit; } ftp $1 << CLAFIN user bill pass gates cd rep_distant lcd rep_local ascii mput *.csv bye CLAFIN

download_ftp (pr la verif)

[2] La tache
soit un cron
soit un while avec un sleep dedans (c un peu goretus)
while /bin/true ; do
mobilette_perl
sleep 60
done

mobilette_perl:

[code]# Parse table de correspondance “CP/CP chef lieu+nom de chef lieu” en csv
#!/bin/perl
use Getopt::Std;
%options=();
getopts(“hqvnpm”,%options);

if ( defined $options{h} ) {
print “mobillete help :\n”;
exit;
}

$[ = 1; # set array base to 1

open (CORRES, “$ENV{‘HOME’}/corresp_cp_chef_lieu.csv”);
while() {
chomp;
@Fld = split(’,’, $_, 2);

ca vient d’un de mes script je vois pu trop ce que ca fait ca :slight_smile:

$idx=sprintf("%s%s",$Fld[1],$Fld[2]);

    $ma_corres{$Fld[1]} = $Fld[2];
    #printf "Le nom du chef lieu de CP %s c'est  %s\n", $Fld[1] , $ma_corres{$Fld[1]};

}
close (CORRES);

open (FICHIERINPUT, “$ftp_root/cp_.csv”);
while() {
chomp;
@Fld = split(’,’, $_, 2);
$la_corres=$ma_corres{$Fld[1]};
#Euh la je sais pas trop ce que tu veux afficher ds le resultat
printf “%s,%s,%s” , $Fld[1],$la_corres;
}
close (CORRES);[/code]

Donc mobilette tu le redirige vers un fichier :
mobilette nom_de_fichier > nom_fichier_resultat
(le nom_de_fichier est récupéré par getopts)

En gros quoi :slightly_smiling:

vu j’imprime et je regarde ça.
Mrki.
Pour ton info, un redirecteur est un script que tu peux brancher sur squid, et qui recoit 4 arguments de chaque requète qui passe par le squid (je cois: URL,GET/POST, domain, user), et qui renvoie une URL réécrite (qui peut etre par ex une page de bloquage ou l’url d’origine).
Quand squid recoit une requete, il passe l’url au redirecteur et ne cache que le contenu de l’url de substitution.
C’est comme ça qu’on peut brancher un filtre d’url un peu baleze, et c’est facile à faire en perl.
Frox est un proxy ftp capable de capter de manière transparente (ce que squid ne sait pas faire tout seul) les requetes ftp, et de les rediriger vers squid.
Mais je ne sais pas trés bien comment ça ce passe lors d’un ftp ou d’un http put traversant le squid, c’est pour ça que je me demandais si ça pouvait passer par un redirecteur (pigen zie ?).
Bon, fin du déjeuner, je retourne sur mon exchange (sisi…).

Ah ok merci pr l’info. Je ne connais pas (encore?) squid.
Genau ich pige :slightly_smiling:
Sinon pr le proxy ftp c’est tres bien au niveau sécurité!! Dans certaines boites ils laissent passer le ftp en direct et c’est loin d’etre la panacée!! Ne parlons pas des proxy Microsoft…

Exchange? Ah ca va, y a pire dans les produits crosoft. Faut te gaver de formation alors!

Au fait, le sleep 60 c’est un peu rapide qd meme :slightly_smiling: Je doute que ton prestataire regarde ttes les 60s son serveur ftp. Surtout si il est corse :slightly_smiling: