Bonjour,
je rencontre un problème sur l'exécution d'un script PERL depuis que la plateforme FTP a été migrée de :
Windows 2000 SP4 +IIS 6.5 vers Windows 2008 SP2 + IIS 7.5
Le script se connecte à un serveur FTP, et doit récupérer des fichiers (XML) sur un répertoire local.
A priori, la connexion au FTP se passe bien,
Mais au moment de lister les fichiers du répertoire courant, le script "ne trouve aucun fichiers" (alors qu'ils sont bien présents) et ne les rapatrie donc pas ...
Et ce, depuis la migration de plateforme.
(voir Code et Log en fin de message)
La commande "parse_dir" semble être en cause ...
Le même script exécuté sur un serveur FTP Free, parvient, après connexion au serveur FTP, à lister les fichiers dans le répertoire courant.
Avez vous déjà rencontré de ce problème ?
Si oui, comment l'avez vous résolu ?
Existe-t-il une fonction équivalente à "parse_dir" ou un autre moyen de lister les fichiers ?
Je précise que je ne suis pas un pro du PERL ...
Merci pour vos retours .
Philoo
**************************************************
Le code utilisé est le suivant :
**************************************************
**************************************************
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 use Net::FTP; use File::Listing qw(parse_dir); use File::Compare; use File::stat; $BATCH = "BATCH_FTP"; require("SMP_common.pm") || die("SMP_common.pm n'a pas pu être ouvert - $!"); my $ERROR = 0; log_start($LOGFILE); my $nombre_tentatives_max = $CONFIG->{$BATCH}{MAX_TENTATIVES}; my $nb_fichier_tot = 0; my $nb_fichier_ok = 0; log_append("1) Connexion au serveur FTP ".$CONFIG->{$BATCH}{"FTP_SERVER"}."..."); # Ouverture de la connextion FTP $ftp = Net::FTP->new($CONFIG->{$BATCH}{"FTP_SERVER"}); if(!$ftp) { log_append(" => Erreur de connexion au site : \n\n$@\n"); $ERROR = 1; } else { if(!$ftp->login($CONFIG->{$BATCH}{"FTP_LOGIN"}, $CONFIG->{$BATCH}{"FTP_PASSWORD"})) { log_append(" => Erreur d'identification FTP (Login : ".$CONFIG->{$BATCH}{"FTP_LOGIN"}.")"); $ERROR = 1; } else { $ftp->binary(); log_append("2) Exploration du répertoire distant..."); # Liste des fichiers dans le répertoire distant #@ls = $ftp->dir(); @ls = $ftp->ls('-lR'); log_append("2-1) Contenu Répertoire distant : " .@ls ); if (!@ls) { log_append(" => Répertoire vide"); } else { log_append("3) Transfert des fichiers XML..."); # Log passage dans la boucle log_append("3-1) Transfert des fichiers XML - Log avant FOR EACH ..."); # Rapatriement des fichiers XML présents sur le serveur FTP foreach my $fichier (parse_dir(\@ls)) { # Log passage dans la boucle log_append("3-2) Transfert des fichiers XML - Log dans boucle FOR EACH ..."); ....... } #Log passage dans la boucle log_append("3-3) Transfert des fichiers XML - Log sortie boucle FOR EACH ..."); } log_append("4) Fermeture de la connexion FTP"); $ftp->quit();
Le fichier de Log obtenu est le suivant
**************************************************
08:57:58 : Début de traitement
08:57:58 : 1) Connexion au serveur FTP XXXXX...
08:57:58 : 2) Exploration du répertoire distant...
08:57:58 : 2-1) Contenu Répertoire distant : 4
08:57:58 : 3) Transfert des fichiers XML...
08:57:58 : 3-1) Transfert des fichiers XML - Log avant FOR EACH ...
08:57:58 : 3-3) Transfert des fichiers XML - Log sortie boucle FOR EACH ...
08:57:58 : 4) Fermeture de la connexion FTP
Partager