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

  FORUM HardWare.fr
  Programmation
  PHP

  Récupérer des infos renvoyées par un serveur FTP

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer des infos renvoyées par un serveur FTP

n°2001639
herka57
membrus simplex
Posté le 15-06-2010 à 08:57:04  profilanswer
 

Bonjour,
 
Je suis en train d'essayer de récupérer des infos envoyées par un serveur FTP (une sorte de ticket suite à la dépose d'un fichier), mais je me casse un peu les dents
Voilà le déroulement d'une session type :
 

C:\Program Files\EasyPHP-5.3.2i\www>ftp *****
Connected to *****.
220-FTPD1 IBM FTP CS V1R8 at *****, 06:40:47 on 2010-06-15.
220 Connection will close if idle for more than 5 minutes.
User (*****:(none)): UTJ1H
331 Send password please.
Password:
230 UTJ1H is logged on.  Working directory is "UTJ1H.".
ftp> QUOTE SITE FILETYPE=JES
200 SITE command was accepted
ftp> PUT ./COMPARE
200 Port request OK.
125 Sending Job to JES internal reader FIXrecfm 80
250-It is known to JES as JOB10147
250 Transfer completed successfully.
ftp: 850 bytes sent in 0,00Seconds 850000,00Kbytes/sec.
ftp> ls
200 Port request OK.
125 Nlst started OK
JOB10147
250 Nlst completed successfully
ftp: 10 bytes received in 0,00Seconds 10000,00Kbytes/sec.
ftp> dir
200 Port request OK.
125 List started OK
UTJ1HA    JOB10147  OUTPUT    4 Spool Files
250 List completed successfully.
ftp: 74 bytes received in 0,01Seconds 4,93Kbytes/sec.
ftp> put RMFDC2
200 Port request OK.
125 Sending Job to JES internal reader FIXrecfm 80
250-It is known to JES as JOB10148
250 Transfer completed successfully.
ftp: 10525 bytes sent in 0,00Seconds 10525000,00Kbytes/sec.
ftp> dir
200 Port request OK.
125 List started OK
UTJ1HA    JOB10147  OUTPUT    4 Spool Files
UTJ1HA    JOB10148  ACTIVE
250 List completed successfully.
ftp: 148 bytes received in 0,33Seconds 0,45Kbytes/sec.
ftp>


 
C'est sur un mainframe, l'idée est d'envoyer un job à JES/2 en passant par FTP, attendre que
celui-ci aie fini de s'exécuter, et récupérer les spools d'exécution.
 
Donc,  
1) je me signe
2) j'indique au serveur FTP que je m'adresse à JES
3) je balance le job, JES me répond avec un n° de job
4) j'attends que le job soit fini  
    dans le premier cas, il se finit vite, la commande DIR renvoie la liste avec soit ACTIVE soit OUTPUT, indiquant
    si le job est fini ou encore en train de s'exécuter.
5) je récupère les spools (un bête GET)
 
Mais voilà, si j'utilise les fonctions "standard" php comme ftp_put, je ne récupère pas le n° de job
Si je fais un petit algo pour balancer le fichier sur le port DATA (c'est du passif), le job ne s'exécute pas, ce qui
m'indique que je merde quelque part.
Voilà l'un des essais que j'ai fait :

Code :
  1. <?php
  2. echo "Please wait while connecting to ****<BR>";
  3. $server = "****";
  4. // Connect to FTP server
  5. $conn = ftp_connect($server);
  6. if (!$conn) die("Unable to connect to $server" );
  7. // Login as "user" with password "pass"
  8. if (!ftp_login($conn, 'UTJ1H', '********')) die('Error logging into ****');
  9. echo "Connected, sending JCL <BR>";
  10. // Issue: "SITE FILETYPE=JES" command to ftp server
  11. if (!ftp_site($conn, 'FILEtype=JES')) die('Command failed.');
  12. // Issue PASV command to get IP and port of DATA socket to use
  13. $result = ftp_raw($conn, 'PASV');
  14. // Compute data and port from PASV command result
  15. $temp = explode("(",$result[0]);
  16. $temp2 = explode(" )",$temp[1]);
  17. $temp3 = explode(",",$temp2[0]);
  18. $data_host = $temp3[0] . '.' . $temp3[1] . '.' . $temp3[2] . '.' . $temp3[3];
  19. $data_port = ( $temp3[4] * 256 ) + $temp3[5];
  20. // Open data connection
  21. $data_channel = fsockopen($data_host,$data_port);
  22. if (!$data_channel) die("Unable to establish data connection to $server <BR>" );
  23. // Open the JCL file to send it through data channel
  24. $jcl_file = fopen("./COMPARE","r" );
  25. $contents = '';
  26. while (!feof($jcl_file))
  27. {
  28. fwrite($data_channel,fread($jcl_file,4096)) ;
  29. }
  30. fclose($jcl_file);
  31. fclose($data_channel);
  32. print_r($result);
  33. // List files using FTP command socket
  34. $contents = ftp_rawlist($conn, "." );
  35. print_r($contents);
  36. ?>


 
Quelqu'un peut m'aider à pointer là où je merde ?
 
merci,
Romu

mood
Publicité
Posté le 15-06-2010 à 08:57:04  profilanswer
 

n°2002178
herka57
membrus simplex
Posté le 16-06-2010 à 13:49:46  profilanswer
 

Je m'auto répond pour faire avancer le schmilblick : dans ce cas là, j'ai oublié la commande "STOR" envoyée sur le canal de commandes, donc ça ne peut pas marcher.  
 
J'ai rajouté le STOR, mais cela ne fonctionne toujours pas.
 
Work in progress...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Récupérer des infos renvoyées par un serveur FTP

 

Sujets relatifs
envoi de fichier par FTPRequete Serveur WGET
FTP copie de répertoireComment récupérer des informations sur un site web ?
Mappage FTP en vbscriptrécupérer un cookie
Recupérer la valeur d'un slider js[Treeviewer] Récupérer le nom de la colonne lors d'une sélection
Infos sur les balises métarecuperer valeur d'un select jquery
Plus de sujets relatifs à : Récupérer des infos renvoyées par un serveur FTP


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