uploader en passive mode sur un ftp

uploader en passive mode sur un ftp - Perl - Programmation

Marsh Posté le 05-01-2005 à 21:25:16    

Bonjour a tous,
 
jessaye de faire un programme qui se connecte a un ftp et lui upload
un fichier.
 
Quand je suis ds le reseau du serveur aucun probleme mon programme fonctionne.
 
Quand je tente depuis lexterieur mon programme si connecte puis plus rien.
 
Quand je fait la meme manip avec un client graphique ca marche mais je remarque  
 
R] 200 Type set to A.
[R] PASV
[R] 227 Entering Passive Mode (,78,32)
[R] Opening data connection IP: 82.123.161.13 PORT: 20000
[R] LIST -al
[R] 150 Opening ASCII mode data connection for /bin/ls (167 bytes).
[R] 226 Transfer successful.
 
Voici le code de mon client :  
 
&clear_error("Error connecting ftp1" ) unless my $ftp1 = Net::FTP->new($ftp_address, Passive => 1, Timeout => 60,Port =>$ftp_port);
 
  &clear_error("Authentification fail" ) unless $ftp1->login($ftp_user, $ftp_pass);
 
  &clear_error("binary mode error" ) unless$ftp1->binary();
 
  #&clear_error("psv port recuperation" ) unless my $psv = $ftp1->pasv;
  #print "le port recuperer est le ".$psv;
  #&clear_error("error of sending port" ) unless $ftp1->port($pasv);
 
  &clear_error("can't store" ) unless $ftp1->put($chemin.".zip" );
 
  $ftp1->close();
   $ftp1->quit();
 
 print "FTP transfert OK\n";
 
Je pense que la solution viendrait darriver a etablir une connexion en passive mode pour le transfert mais je ni arrive pas du tout.
 
Si quelqun peut maider ca serais super sympa :hello:  

Reply

Marsh Posté le 05-01-2005 à 21:25:16   

Reply

Marsh Posté le 05-01-2005 à 22:41:43    

sur le doc de Net::FTP
 
pasv ()
Tell the server to go into passive mode. Returns the text that represents the port on which the server is listening, this text is in a suitable form to sent to another ftp server using the port method.

Reply

Marsh Posté le 06-01-2005 à 08:55:58    

Vi je sais mais cette methode te renvoie un port.
Mais le probleme viens juste apres.
cad comment le reassigner a ma connection en cours
 
merci de ton aide

Reply

Marsh Posté le 06-01-2005 à 09:03:12    

hummm essaie comme ca :

Code :
  1. $ftp = Net::FTP -> new (
  2. "host",
  3.   Passive =>1 )
  4.   Timeout => 30
  5.   ) or die "Connexion impossible\n";

Reply

Marsh Posté le 06-01-2005 à 10:16:27    

Je te remercie de repondre aussi vite.
G essaye cette teknique qui na helas pas marche.
Je pense quil faut etablir une nouvelle connexion en utilisant le port renvoye par le serveur grace au $ftp->psv().
G essaye douvrir une nouvelle connexion sur ce port mais sans resultat.
Il faudrait bouger la connexion etablie sur ce nouveau port pour transferer et c la ou je ni arrive pas.

Reply

Marsh Posté le 09-01-2005 à 18:17:18    

$ftp1->pasv() renvoie le port utilise en passive
et s'occupe tout seul de le passer en mode passif.
on fini par  
&clear_error("can't store" ) unless $ftp1->put($chemin.".zip" );  
et ca rulez
 
Merci de votre aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed