banneer

Réducteur d'URL tinad:

Collez l'adresse du site:

Rechercher sur le blog du grouik:

Ce mémo a pour objectif d'expliquer comment automatiser le transfert d'un fichier par FTP. Pratique lors de la création de passerelles.

Prérequis: un serveur FTP. Le compte FTP utilisé est chrooté dans le dossier dans lequel doivent être déposés les fichiers. Pour créer le serveur FTP, ce billet donne la solution.

Pour le moment, on va faire un truc simplissime:

Je crée 3 fichiers scriptFTP.jpeg

  • script.bat est le script qui lancera le transfert. Il sera mis en tâches planifiées (pour ça, je vous laisse trouver comment on fait)
  • plannings_Extranet.ftp est la liste de commandes à éxécuter en FTP pour basculer les fichiers vers le repertoire FTP. Vous l'avez compris, la petite passerelle que je suis en train de faire a pour but de basculer les planings sur notre extranet.
  • Plop.txt est le fichier qui sera transféré; C'est juste pour le test hein!

script.bat

Il contient juste une ligne pour le moment.

  1. ftp -s:planings_Extranet.ftp

Il lance le client dos ftp, qui prendra la liste d'instructions contenues dans le fichier planings_Extranet.ftp

planings_Extranet.ftp

  1. open 192.168.10.253
  2. user
  3. password
  4. prompt
  5. lcd D:\testFtp
  6. put plop.txt
  7. quit

Explication ligne par ligne:

  • 1 Ouvrir la connexion vers le serveur 192.168.10.253
  • 2 Lui indiquer l'user FTP
  • 3 Lui indiquer le mot de passe ftp
  • 4 Attendre le prompt
  • 5 Se placer localement dans le repertoire comprenant le(s) fichiers à transférer
  • 6 envoyer le fichier
  • 7 fermer la connexion

plop.txt

Bah, c'est le fichier à transférer; OSEF?

Lancez script.bat, vérifiez sur le serveur de destination si le fichier a bien été poussé.

Un peu plus compliqué; On va pousser tous les fichiers d'un répertoire et créer un fichier de logs.

Prérequis, télécharger curl

Pour se simplifier un peu la vie, cette fois, on va utiliser curl. Téléchargez l'éxécutable qui correspond à votre version de windows: http://curl.haxx.se/download.html Je me créé l'architecture suivante sur le windows;

  • testFtp
    • script.bat
    • bin
      • curl.exe
      • license_curl.txt
    • toSend
      • fichier1.pdf
      • fichier2.pdf
      • fichier3.pdf

l'objectif est d'envoyer les fichiers (quelque soient leur noms) du dossier toSend sur notre ftp. Par contre si le fichier existe déja sur le serveur; je l'écrase.

Transfert automatique en écrasant les éventuels fichiers sur le serveur

Voici le contenu du scrip.bat

  1. ::Envoie le contenu d un repertoire sur un dossier FTP. Ecrase les fichiers déja existants si des noms sont concordants
  2. ::Ce script utilise Curl (pour le ftp). La licence se situe dans le dossier bin
  3. cls
  4. ::On met un titre au shell
  5. @title Envoie le contenu d un repertoire sur un dossier FTP. Ecrase les fichiers déja existants si des noms sont concordants
  6. ::Supprimer les retours écran
  7. @echo off
  8.  
  9. ::#### VARIABLES####
  10. ::PARTIE FTP
  11. set user_ftp=userFtP
  12. set pwd_ftp=pwdFtp
  13. set ip_ftp=192.168.10.253
  14. set path_ftp=/
  15. ::DOSSIER LOCAL A TRANSFERER
  16. set local_path=%cd%\toSend
  17.  
  18. ::Définition des Chemins
  19. ::répertoire racine
  20. set rep_root=%cd%
  21. ::chemin des binaires
  22. set rep_bin=%cd%\bin
  23. ::chemin des fichiers de journaux
  24. set rep_log=%cd%\log
  25.  
  26. ::Si le ping est négatif, quitter et logguer
  27. ping -n 1 %ip_ftp%
  28. if %errorlevel%==1 goto NO_LINK_SERV
  29.  
  30. ::On envoie
  31. cd %local_path%
  32. ::Eventuellement, remplacez *.* par le filtre de votre choix genre planing-*.pdf dans la partie qui suit
  33. if exist ./*.* (
  34. FOR %%f IN (*.*) DO (
  35. ::Envoi de chaque fichier sur le ftp
  36. %rep_bin%\curl.exe -u %user_ftp%:%pwd_ftp% -Q "+CWD %path_ftp%" -T "%%f" ftp://%ip_ftp%/
  37. ::On logue les infos dans un fichier
  38. echo "%date%|%time:~0,2%h%time:~3,2% : fichier %%f -- envoyé " >>%rep_log%/envois.log
  39. )
  40. ::On supprime les fichiers après l envoi car on en a plus besoin
  41. del/Q *.*)
  42. GOTO FIN
  43.  
  44. :NO_LINK_SERV
  45. ::le serveur ne répond pas au ping
  46. echo "%date%|%time:~0,2%h%time:~3,2% : Le serveur FTP n'est pas joignable - Aucun transfert effectué" >>%rep_log%/connexions.log
  47.  
  48. :FIN
  49. ::On quitte

Plus qu'à mettre le script dans les tâches planifiées.

Commentaires

1. Le jeudi, décembre 29 2011, 11:28 par TimCruz
gravatar

C'est beau! J'aime :) Je pense que je vais m'en inspirer pour quelques routines d’administration. Merci

Ajouter un commentaire

Nom ou pseudo:
Adresse email:
Site web (facultatif):
Commentaire:

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

La discussion continue ailleurs

URL de rétrolien : http://blog-du-grouik.tinad.fr/trackback/1013

Fil des commentaires de ce billet

Dans la même catégorie:
scripts shell bash


Algorithme à la con, manipulation de chaines de caracteres

EDIT dans les commentaires, Ben propose une solution en une ligne de code avec une regex:D J'ai une base de donnée mal foutue (spamoi qui l'ai conçue) dans laquelle les noms et prénoms sont dans le même champs. Une typographie est respectée, toutes les lettres du nom sont en majuscules tandis que

Lire la suite...



Entetes HPRIM

Il y a déjà un an ou deux, j'avais fait une passerelle avec notre logiciel de dossier de soins. J'avais utilisé comme point d'entrée l'interface de laboratoire (format HPRIM). Oui avec un logiciel propriétaire et fermé, plus que bancal, il faut bien trouver des moyens de faire des interfaces (sans

Lire la suite...


Purger un dossier avec un script .bat

cmd.jpg
Nous allons voir comment purger un dossier avec un script .bat (pour windaube quoi) Bon okie, j'ai honte d'écrire ce billet. Mais faut me comprendre, cette semaine, j'ai installé des PC, modifié le script dpetites annonces à notre intranet. Ce code est sans grand intéret aussi, juste un appel mysql

Lire la suite...


Apiuncrypt décrypter les résultats de laboratoire Apicrypt depuis un serveur de mail unix

Fonctionnement Le laboratoire avec qui on traite crypte les résultats de laboratoires avec des clés personnelles, les envoie à Apirypt (notre tiers de confiance) qui les décrypte, les recrypte avec nos clés avant de nous les envoyer (sur une BAL dédiée à ça). Apicrypt propose facilement deux

Lire la suite...


Mémo Passerelle BDD informix vers MySql

Il s'agit d'un billet juste pour moi. ^^ UN truc qui faisait partie de ma dernière

Lire la suite...


Propulsé par Dotclear