Ce sujet est résolu.
1 | |||
Auteur | Messages | ||
---|---|---|---|
archi12 | #1 Posté le 25/3/2014 à 15:44:11 | ||
bonjour, comment envoyer une commande "dir" à un serveur ftp ( et où avoir le résultat, sous quelle forme ) avec gambas-ftp ? merci de votre aide | |||
Flachy Joe | #2 Posté le 25/3/2014 à 18:56:23 | ||
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Salut, le principe de base de l'exécution d'une commande FTP : http://www.gambasforge.org/sujet-4544-mkdir-ftp-page-1.html#m2 la commande de listing est MLSD Flachy Joe | ||
archi12 | #3 Posté le 26/3/2014 à 10:34:09 | ||
merci Flachy Joe pour cette reponse rapide. ci_apres le source d'une partie de mon prog: Public Sub butExec_Click() Dim myFtp As New FtpClient Dim sPath As String Dim sLocalFileName As String sPath = "ftp://192.168.0.251/public/files/" sLocalFileName = "/home/user/Desktop/NAS_Exec" myFtp.URL = sPath myFtp.User = "user" myFtp.Password = "password" myFtp.Async = False myFtp.Exec(["PWD"]) ' mon serveur NAS ne connait pas MLSD, mais seulement "dir repertoire" End mais comment indiquer où je veux la réponse (dans sLocalFileName) ? (d'un autre coté, les fonctions put et get marchent tres bien avec gambas) merci encore | |||
Flachy Joe | #4 Posté le 29/3/2014 à 19:14:01 | ||
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Avec l'option Debug on peut obtenir le résultat des commandes dans la console mais il n'y a aucun moyen de les traiter et on ne peut pas récupérer directement la liste de fichiers du fait qu'elle nécessite l'utilisation préalable de la commande PORT ou PASV. Les commande utilisables en passant par Exec sont donc limitées à celle ne fournissant rien en retour. Par contre le contenu d'un répertoire peut être obtenu en faisant un Get avec l'URL définie sur le dossier :
FMain.Button1_Click.11: drwxr-xr-x 8 1000 1000 4096 Mar 29 15:37 debian FMain.Button1_Click.11: drwxr-xr-x 8 1000 1000 4096 Oct 05 2012 debian-amd64 FMain.Button1_Click.11: drwxr-sr-x 6 1000 1000 72 Mar 29 15:15 debian-backports FMain.Button1_Click.11: drwxr-xr-x 6 1000 1000 111 Mar 29 04:00 debian-non-US FMain.Button1_Click.11: drwxrwsr-x 6 1000 1000 79 Mar 28 07:11 debian-security FMain.Button1_Click.11: drwxr-sr-x 5 1000 1000 114 Nov 01 2011 debian-volatile FMain.Button1_Click.11: drwxr-xr-x 2 1000 1000 6 Mar 29 15:00 tmp Flachy Joe | ||
archi12 | #5 Posté le 30/3/2014 à 10:46:40 | ||
Merci Flashy Joe, Il y a peut etre un moyen de rediriger debug vers ??? a investiguer merci encore | |||
Flachy Joe | #6 Posté le 30/3/2014 à 11:52:41 | ||
Iguane : Il Gambas Uniquement pour Activer ses NEurones | Je me rend compte que je n'ai peut être pas été très clair : l'option debug permettant d'obtenir le déroulé brute du transfert FTP est celle de l'objet FtpClient
Par contre la seconde méthode (Get sur le répertoire) fourni des infos directement exploitables dans le code (contenu de la variable l de mon exemple). Flachy Joe | ||
archi12 | #7 Posté le 31/3/2014 à 15:09:00 | ||
Bonjour, Merci de cette précision. Je pense quand meme revenir à la bonne vieille méthode (que je maitrise mieux, et où toutes les commandes ftp sont acceptées, avec resultat visible pour chacune d'elle): c'est suffisant pour une operation ponctuelle création et execution d'un shell Dim cFile As File Dim cFilePath As String Dim s, sResult As String cFilePath = "/home/user/cFile.sh" cFile = Open cFilePath For Write Create Print #cFile, "#!/bin/sh" ' repertoire de reception d'un fichier Print #cFile, "mkdir /home/user/localRep" Print #cFile, "cd /home/user/localRep" ' on lance ftp Print #cFile, "ftp -n 192.168.0.251 << END_SCRIPT" Print #cFile, "user user password" Print #cFile, "help" Print #cFile, "pwd" Print #cFile, "cd /PUBLIC/files" Print #cFile, "pwd" Print #cFile, "dir" Print #cFile, "get ftpFile.txt" Print #cFile, "quit" Print #cFile, "END_SCRIPT" ' on quitte ftp Print #cFile, "exit 0" Close #cFile Shell "chmod +x " & cFilePath To sResult Exec [cFilePath] Wait To sResult Print "sResult>\r\n" & sResult Shell "ls -l /home/user/localRep" To sResult Print "sResult>/r/n" & sResult merci encore | |||
1 |