Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
895 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Récupération de fichiers par FTP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupération de fichiers par FTP

n°1755490
crash-over​ide
Où es tu acidBurn ?
Posté le 04-07-2008 à 10:59:31  profilanswer
 

Salut tout le monde !!    :hello:

 

Je suis novice en matière de script !!
On m'a demandé de créer un script qui serait capable de récupérer des fichiers se trouvent sur 3 serveurs aux heures prédéfinies (12h et 18h) sur 2 sites et le tout doit se faire par ftp. Les fichiers, ensuite doivent être rapatriés sur mon pc local.
J'ai commencé à chercher à droite à gauche.

 

Si quelqu'un peut m'aider à créer ce script, elle me dépannerai énormément !   :jap:

 


Merci,

 

Elmoricq-edit : titre changé pour qu'il soit 1. explicite et 2. qu'il ne masque pas la catégorie du message (titre d'origine commençant par des crochets)


Message édité par Elmoricq le 08-07-2008 à 21:15:19

---------------
Que la paix soit avec toi mon ami(e) !
mood
Publicité
Posté le 04-07-2008 à 10:59:31  profilanswer
 

n°1755529
blastkille​r
Posté le 04-07-2008 à 11:48:34  profilanswer
 

T'as pas l'air d'avoir beaucoup chercher :
http://forum.hardware.fr/hfr/Progr [...] 8726_1.htm
http://forum.hardware.fr/hfr/Progr [...] 2139_1.htm
http://forum.hardware.fr/hfr/Progr [...] 8870_1.htm
 
Bref cherche, propose un code et s'il y a des erreurs cherche encore, et si tu trouves pas tu demandes.

n°1757095
crash-over​ide
Où es tu acidBurn ?
Posté le 08-07-2008 à 21:13:43  profilanswer
 

blastkiller a écrit :

T'as pas l'air d'avoir beaucoup chercher :
http://forum.hardware.fr/hfr/Progr [...] 8726_1.htm
http://forum.hardware.fr/hfr/Progr [...] 2139_1.htm
http://forum.hardware.fr/hfr/Progr [...] 8870_1.htm
 
Bref cherche, propose un code et s'il y a des erreurs cherche encore, et si tu trouves pas tu demandes.


 
Je veux que le script fasse les étapes suivantes :
 
1) Se connecter en ftp
2) Accéder au répertoire distant
3) Récupérer le fichier en date du jour (le fichier est en .dat)
4) Rapatrier ce fichier localement
5) Renommer les fichiers . dat en .xml
6) Quit
 
Voici une partie du code :
 
@echo off
echo open @ftp >ftp.txt
echo user utilisateur >ftp.txt
echo password password >ftp.txt
echo binary >ftp.txt
echo "chemin accès au répertoire distant">ftp.txt
echo get "%fichier.dat%" >ftp.txt
echo quit >ftp.txt
ftp -i -n -s:ftp.txt
pause
 
Il manquent quelques parties, pouvez vous m'aider car je ne m'y connais absolument pas !!!
 
Merci     :jap:  
 
 
 
 


---------------
Que la paix soit avec toi mon ami(e) !
n°1757140
blastkille​r
Posté le 08-07-2008 à 22:48:05  profilanswer
 

Imaginons le fichier a recuperer sur le ftp est dans le dossier /test/
et se nomme fichier.dat
on veut le stocker dans c:\ftpfiles\
le serveur ftp est ftp.test.fr
l'utilisateur est blastkiller
et le pass est pgm
 
 
@echo off
cd c:\ftpfiles\
echo open ftp.test.fr> ftp.txt
echo user blastkiller>> ftp.txt
echo password pgm>> ftp.txt
echo binary>> ftp.txt
echo cd /test>> ftp.txt
echo get fichier.dat>> ftp.txt
echo quit>> ftp.txt
ftp -i -n -s:ftp.txt
del ftp.txt > NUL
pause  

n°1757154
crash-over​ide
Où es tu acidBurn ?
Posté le 08-07-2008 à 23:44:47  profilanswer
 

Peux tu me dire à quoi sert "echo binary" ? et la différence entre > et >> ?
Sinon merci pour ton aide. Je n'étais pas très loin je trouve ;-)


---------------
Que la paix soit avec toi mon ami(e) !
n°1757242
blastkille​r
Posté le 09-07-2008 à 11:20:46  profilanswer
 

binary c'est un mode de transfert FTP, t'es pas obligé de le mettre.
">" permet de rediriger la sortie, là c'est vers ftp.txt
la difference entre ">>" c'est que ">>" écrit a la suite du fichier tandis que ">" va réécrire le fichier entierement. Fais des tests si tu vois pas très bien

n°1757247
crash-over​ide
Où es tu acidBurn ?
Posté le 09-07-2008 à 11:27:51  profilanswer
 

Ok ! Merci pour ton aide je vais l'essayer dès que je peux !! :-)


---------------
Que la paix soit avec toi mon ami(e) !
n°1757311
crash-over​ide
Où es tu acidBurn ?
Posté le 09-07-2008 à 13:44:31  profilanswer
 

J'ai une erreur lors de lancement. Dès que je fais open il me met "hôte inconnu" et je passe en ftp> !
 


---------------
Que la paix soit avec toi mon ami(e) !
n°1757394
blastkille​r
Posté le 09-07-2008 à 15:36:22  profilanswer
 

t'as mis quoi a la ligne open ?

n°1757425
crash-over​ide
Où es tu acidBurn ?
Posté le 09-07-2008 à 16:27:39  profilanswer
 

open adresse_Ip_ftp !
 
Et à chaque fois, il me dit non connecté ou accès refusé !


---------------
Que la paix soit avec toi mon ami(e) !
mood
Publicité
Posté le 09-07-2008 à 16:27:39  profilanswer
 

n°1757492
blastkille​r
Posté le 09-07-2008 à 18:21:49  profilanswer
 

ben écoute là sa vient pas du code mais du server ftp ou de toi qui a fais une erreur chepa où. J'peux pas t'aider, envoi en message privée tout ton code que t'as mis stp

n°1803193
burn2
ça rox du poney
Posté le 22-10-2008 à 14:40:11  profilanswer
 

Topic trés intéréssant qui risque de me servir. :)
 
Pour ma part je bloque juste niveau script windows sur comment envoyer une foule de fichier. Je m'explique.
 
JE dois faire un script qui va sur un ftp récupérer tous les fichiers qui s'y trouvent. (leur nom est à définir mais s'il y en a plusieur par jour, il faut prendre en compte que je ne connaitrais pas leur nom).
Donc je dois récupérer ces fichiers avec un get. Ces fichiers seront traités par un logiciel qui en produira d'autre et ces autres fichiers devront être uploadé sur le serveur.  
 
 
ma question est donc comment télécharger tous ces fichiers et puis les re uploader? En sachant que je ne connais pas leur nom et qu'il peut y en avoir plusieurs?
 
J'ai vu diverses idées avec un ls sur le serveur redirigé vers un fichier txt puis traiter ce fichier, mais bon ça ça marcherait:?

Code :
  1. @echo off
  2. cls
  3. cd F:\dossier
  4. ftp -inv -s:"cmd.ftp"
  5. FOR /F %%i IN (liste.txt) DO (
  6.     echo open xxx.xxx.xxx.xxx > cmd1.ftp
  7.     echo USER nom pass >> cmd1.ftp
  8.     echo cd dossier
  9.     echo get %%i >> cmd1.ftp
  10.     echo bye >> cmd1.ftp
  11.     ftp -inv -s:"cmd1.ftp"
  12.     )


 
En sachant que dans cmd je risque de mettre ça:

Code :
  1. open xxx.xxx.xxx.xxx 
  2. USER nom pass
  3. cd dossier
  4. ls * liste.txt
  5. bye


 
 
Et pour uploader un dir > liste.txt
et là même chose que pour downloader mais avec un put ça devrait le faire??
Le problème c'est quoi utiliser au niveau de dir pour ne récupérer que le nom des fichiers (équivalent à ls quoi)
 
EDIT: dir /B *.txt par exemple ne me donnera que les txt donc all is good.


Message édité par burn2 le 22-10-2008 à 15:32:46

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1804353
Nono le pe​tit robot
Posté le 24-10-2008 à 19:57:27  profilanswer
 

Bonjour Burn2.
 
Pour recevoir plusieurs fichiers en même temps, il y a une commande sous FTP qui s'appelle "mget" (comme il y a aussi "mput" pour les envoyer).
 
A la suite, tu renseignes le nom des fichiers que tu veux transférer, avec les "jokers" éventuels (* ou ?)
 
Exemple :
mget MesFichiers*.txt
 
Si tu le fais à la main, tu te rendras compte qu'on te demandra confirmation avant chaque transfert de fichier.
Pour éviter ça, il existe une commande PROMPT, à mettre seule avant le mget (ou mput).
 
Apparemment ton problème est sous DOS, alors n'oublie pas de mettre ECHO devant tout ça.
J'espère que ça suffira pour te dépanner !
 
Au fait, tu tapes FTP tout seul, puis HELP, et ça te donne la liste des commandes disponibles.
Ensuite, tu tapes HELP UneCommande pour savoir ce que ça fait.
 

n°1804360
burn2
ça rox du poney
Posté le 24-10-2008 à 20:17:38  profilanswer
 

Bonjour, merci de ta réponse.
Ouep je savais pour help. Mais en fait ma solution marche au poil. :) J'ai fais un test et je récupère bien tous les fichiers présents dans ce répertoire. :)


Message édité par burn2 le 24-10-2008 à 20:17:53

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1804477
Je@nb
Kindly give dime
Posté le 25-10-2008 à 15:29:31  profilanswer
 

pk tu n'utilises pas un outil tout fait ? style wget ?

n°1804487
burn2
ça rox du poney
Posté le 25-10-2008 à 16:10:23  profilanswer
 

Je@nb a écrit :

pk tu n'utilises pas un outil tout fait ? style wget ?


Parce que le pc est sous windows 98, que c'est du temporaire, et que le but c'est d'aller chercher automatique des fichiers sur un ftp, les mettres dans un répertoire, c'est traité puis une fois traité tout re upper sur le serveur dans un autre répertoire. :o


---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1807982
burn2
ça rox du poney
Posté le 04-11-2008 à 09:41:18  profilanswer
 

Bon j'ai juste un petit problème. J'essaye de sécuriser un peu la chose, et donc dans le cas de l'upload vérifier que la liste des fichiers présents sur le serveur, correspond bien à ce que j'ai chez moi, en gros, que les fichiers que je viens d'upper y sont bien. Mais le problème, c'est que sur le serveur il peut rester des fichiers de la fournée précédente. Je voudrais donc juste voir si les fichiers présents dans mon répertoire local sont sur le serveur.
(que le serveur présente donc au moins les fichiers que je viens d'uploader).
Vous avez une idée de comment faire??? Je sais comment récupérer la liste de ce qui est présent sur le serveur ftp, mais je vois pas sous windows comment arriver à faire la comparaison en sachant que les dossiers peuvent êtres différents.
Et qu'en gros mon répertoire local est un sous ensemble du répertoire sur serveur.
LA seule idée que j'avais c'était de générer le fichier en fonction de la date du jour avant de l'uploader ce qui me permettrait de n'avoir que les fichiers du jours, mais bon c'est pas l'idéal car le problème se reposera si la manip se fait au moment de changer de jours...  
La solution bateau c'est aussi de downloader les fichiers présents sur le serveur avant puis d'uploader tout mon contenu du répertoire je pourrais donc juste comparer qu'il y a bien tout.  
 
Y a pas quand même linux c'est bien mieux foutu pour le script. :/ Sous linux je ferais ça super facilement avec comparaison de taille de fichier pour être sûr que tout est bien transféré mais là ça me semble pas possible ou trés difficilement :/  
 
Sinon autre solution qui me vient à l'esprit et qui est ce que je ferais sous linux:
Récupérer la liste des fichiers sur le serveur, lister mon répertoire local, et pour chaque ligne voir si je trouve une occurence dans le fichier sur le serveur.
sous linux je ferais un
isPresent=let  'grep "ligne" liste2.txt|wc -l'
et si c'est > 0 c'est qu'il y a une occurence, on peut faire pareil sous windows?
Je vois la première partie mais pas la deuxième en gros je vois comment rechercher la ligne mais pas compter le nombre de ligne  
type "liste1.txt" |findstr /i /r "test1"
 
EDit visiblement ce n'est pas possible à la volée va faloir que je passe par un fichier texte temporaire et utiliser ce genre de chose:

Code :
  1. for /f "delims=" %%i in ('type fichier.csv') do set /a Compt+=1
  2. echo %Compt%


 
EDIT2: je sens que je vais finir en C++..


Message édité par burn2 le 04-11-2008 à 10:07:14

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1808401
amocco
Posté le 05-11-2008 à 06:42:21  profilanswer
 

bonjour,
 
je me permets de vous relancer sur ce post .
je recherche egalement la possibilité de recuperer un fichier .txt sur un serveur ftp
le rapatrier sur mon pc en local et le traiter dans une base de donnée mysql
merci pour votre aide  
surtout pour traiter le fichier avec mysql

n°1808466
burn2
ça rox du poney
Posté le 05-11-2008 à 10:29:13  profilanswer
 

Bonjour, vous êtes sous quel os?
Sinon je pense que le plus logique, c'est de faire un script bat (ou sh si c'est sous linux) qui va aller récupérer ce fichier (très facile à faire) avec juste une commande ftp dedans. Puis faire un programme dans un langage qui vous correspond avec le drivers mysql et d'insérer dans la base de donnée en traitant ce fichier.
(C++ avec QT par exemple permet d'attaquer une base de donnée mysql directement).


Message édité par burn2 le 05-11-2008 à 10:29:44

---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
n°1808735
amocco
Posté le 05-11-2008 à 17:41:57  profilanswer
 

bonjour ,
 
je suis sur windows , ou puis je avoir un debut de code ?
merci

n°1808738
burn2
ça rox du poney
Posté le 05-11-2008 à 17:51:35  profilanswer
 

Pour la récupération du fichier par ftp, tu as le code juste en haut.
Pour le code de l'insertion dans ta bd, c'est spécifique au langage que tu vas choisir et à ta base de donnée.
En gros tu déclares une base, avec les mots de passes etc, tu t'y connectes, et tu fais des requêtes dessus, après c'est de l'insert into ou de l'alter table normal quoi. ;)


---------------
"C'est vrai qu'un type aussi pénible de jour on serait en droit d'espérer qu'il fasse un break de nuit mais bon …"
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Récupération de fichiers par FTP

 

Sujets relatifs
[Access/VBA] Récupération valeurTélécharger en une fois plusieurs fichiers...
[Résolu] Comparaison Groupe de FichiersProblème d'accent récupération d'un chemin absolu
VB6 et Crystal Reports : export de fichiers vides[RESOLU] [ACCESS] Parcour de tables et récupération de ligne
affichage d'image et ouverture de fichiers sous Firefoxaide pour recuperation donnée via explode mysql
Récupération vidéo WMVRécupération de fichiers FTP par ligne de commande
Plus de sujets relatifs à : Récupération de fichiers par FTP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR