Hello,
là je craque complètement![]()
Sur une machine de prod' qui était autrefois sous Windows 2000, j'avais concocté un script Perl utilisant le module Win32::Internet pour rappatrier sur la machine des fichiers PDF stockés sur un serveur AIX via le réseau local de l'entreprise.
Le programme fonctionnait parfaitement, je tiens à le préciser.
Malheureusement, un crash d'un disque dur est survenu, la machine a été réparée et nous est revenue configurée avec Windows XP SP2.
Et depuis, le programme déconne complètement. Voici le code partiel (j'ai éliminé ce qui n'a rien à faire ici pour + de lisibilité) :
Le soucis, c'est que le programme peut trés bien être capable de récupérer 200 fichiers d'un coup pour lamentablement rester figé sur le 201è sans raison apparente. Ou encore, bloquer de la même manière après seulement 5 ou 6 fichiers récupérer. Voire encore, bloquer dès le premier fichier à récupérer.
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 # PRAGMAS use strict; use Win32::Internet; # PARAMS DE CONNEXION AIX my $hostin = "AIX_Prod"; my $userin = "user"; my $passin = "password"; my $rep = "/DOC/stockage/PDF"; my $I; # initialisation de la connexion FTP $I = new Win32::Internet(); if (! $I->FTP($ftpin, $hostin, $userin, $passin)) { my ($ErrNum, $ErrText) = $I->Error(); die "Connection FTP impossible, erreur n° $ErrNum : $ErrText\n"; } $ftpin->Binary(); # @_ contient les noms des fichiers PDF à rappatrier sur la machine XP foreach my $fic(sort(@_)) { if (! $ftpin->Get("$rep/$fic.PDF", "$fic.PDF")) { warn "$fic.PDF non récupéré dans $rep !\n"; } }
Je répète que le prog, tel que ci-dessus, fonctionnait parfaitement sur le poste à l'époque où Windows 2000 était installé.
Alors depuis, j'ai fait plusieurs batteries de tests, la dernière en date ne montre aucun signe d'amélioration :
Les symptômes restent les mêmes. J'ai même fait un undef sur $I, puis reséquence de $I = new Win32::Internet();, rien à faire.
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 ... ... ... my $Err = 0; # pour fermer puis rouvrir une connexion FTP si plantage # @_ contient les noms des fichiers PDF à rappatrier sur la machine XP foreach my $fic(sort(@_)) { if ($Err) { $ftpin->Close(); undef($ftpin); if (! $I->FTP($ftpin, $hostin, $userin, $passin)) { my ($ErrNum, $ErrText) = $I->Error(); die "Connection FTP impossible, erreur n° $ErrNum : $ErrText\n"; } $ftpin->Binary(); $Err = 0; } if (! $ftpin->Get("$rep/$fic.PDF", "$fic.PDF")) { warn "$fic.PDF non récupéré dans $rep !\n"; ++$Err; } }
J'ai activé les journaux de sécurité XP et ai remarqué que le firewall faisait de l'écoute sur ce qui était en train d'entrer via la connexion FTP. Mais entre écoute et blocage, il y a une différence et elle est bien présente ici puisque le script parvient à télécharger plusieurs fichiers par lots pour s'arrêter bêtement sur l'un d'eux.
En coupant le firewall XP, ça ne change absolument rien à l'histoire.
Test effectué sur chaque PDF où le prog se vautre : j'arrive parfaitement à le récupérer via un client FTP, le fichier se copie bien et est parfaitement lisible via Acrobat Reader.
JE SECHE !
(Et accessoirement : JE HAIS XP !!)
Partager