FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas y dudas enviando comandos al servidor FTP con Indy
Hola, antes de nada presentarme pues es mi primer mensaje en el foro.
Me llamo Miguel, soy de las Islas Baleares y recientemente he empezado a trastear con los componentes Indy. Mi problema es el siguiente, tengo un servidor FTP al cual si yo hago un HELP me devuelve el listado de comandos, entre ellos PROMPT y MDELETE que son los que me estan dando problemas. Pruebo ambos comandos desde la consola de MS-DOS y funcionan correctamente, pero a la hora de usarlos via SendCmd('PROMPT',250); o SendCmd('MDELETE '+vPath,250); que son las funciones para enviar comandos al servidor, siempre me devuelve un error 500 "Command not understood" Lo que necesito es borrar un directorio sin que pida confirmacion y borrando todo el contenido del directorio en si. Ignoro si existe algun metodo en los Indy que me permita hacerlo directamente, he estado buscando pero no he visto nada. Supongo que alguien se habra encontrado con el mismo problema alguna vez. Por cierto, la version de Indy que uso es la 9 para delphi 5 Gracias por adelantado, un saludo |
#2
|
||||
|
||||
Para eliminar un directorio, usá el método RemoveDir.
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
Hola! Gracias por contestar, pero el método RemoveDir no me sirve, dado que este método realiza esta llamada SendCmd('RMD ' + ADirName, 250); y el comando FTP RMD no borra directorios si no están vacios y yo necesito algo que borre tanto el directorio como todo lo que pudiera contener.
Por eso mi idea era utilizar el comando FTP MDELETE desactivando la confirmación con un PROMPT pero al enviar esos dos comandos el servidor me devuelve un error "command not understood". Gracias de nuevo y un saludo. |
#4
|
||||
|
||||
Me temo que mdelete es un comando que implementa el cliente de ftp, y no el servidor.
He llegado a esta conclusión después de hacer algunas pruebas y buscar por un rato. Si te fijas en la definición del protocolo ftp, no hay referencia alguna al comando. Además, viendo la salida que normalmente produce: Código:
ftp> MDELETE c* mdelete cat1? y 200 DELE command okay. mdelete cat2? y 200 DELE command okay. mdelete cat3? 200 DELE command okay. mdelete cata4? n ftp> Algo similar debe ocurrir con el comando prompt. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#5
|
|||
|
|||
Hola de nuevo!
Tanto el PROMPT como el MDELETE son comandos del servidor, pero no son comandos RAW Si envias un HELP al servidor te devuelve un listado con los comandos posibles y, en mi caso, tengo PROMPT y MDELETE, ambos comandos funcionan correctamente conectando desde una consola MS-DOS. Es decir, me extraña que sean comandos del cliente cuando al consultar al servidor te los devuelve en la lista de comandos posibles. De todos modos, sea como sea, no me resuelve mi problema! Creo que tendre que crearme una funcion recursiva que recorra los posibles subdirectorios y archivos a borrar. Un saludo. |
#6
|
||||
|
||||
Francamente no se cual es tu sustento para decir que es un comando del servidor. El listado que has referenciado no dice nada acerca de dicho comando.
El hecho de que se muestre en el help, para mi, no es sino evidencia de que el comando help se interpreta también localmente. Una muestra mas de ello es que, al tener windows en español, si introducis el comando help mdelete te mostrará la ayuda de dicho comando ¡en español!, independientemente del idioma en que responda el servidor. Esto, en mi caso también ocurre para todos los comandos. Otra muestra de ello, es la diferencia que tenemos en el help del cliente de consola windows y el de consola de linux si nos conectamos al mismo servidor: Windows: Código:
C:\Documents and Settings\Mario Antonio>ftp castilloit.com Conectado a castilloit.com. 220---------- Welcome to Pure-FTPd [TLS] ---------- 220-You are user number 3 of 50 allowed. 220-Local time is now 08:56. Server port: 21. 220-This is a private system - No anonymous login 220-IPv6 connections are also welcome on this server. 220 You will be disconnected after 15 minutes of inactivity. Usuario (castilloit.com:(none)): xxx 331 User castillo OK. Password required Contraseña: 230-User xxx has group access to: xxx 230 OK. Current restricted directory is / ftp> help Los comandos se pueden abreviar. Comandos: ! delete literal prompt send ? debug ls put status append dir mdelete pwd trace ascii disconnect mdir quit type bell get mget quote user binary glob mkdir recv verbose bye hash mls remotehelp cd help mput rename close lcd open rmdir ftp> Código:
jcastillo@hyperlink-gateway:~$ ftp ftp.castilloit.com Connected to ftp.castilloit.com. 220---------- Welcome to Pure-FTPd [TLS] ---------- 220-You are user number 1 of 50 allowed. 220-Local time is now 08:48. Server port: 21. 220-This is a private system - No anonymous login 220-IPv6 connections are also welcome on this server. 220 You will be disconnected after 15 minutes of inactivity. Name (ftp.castilloit.com:jcastillo): xxx 331 User castillo OK. Password required Password: 230-User xxx has group access to: xxx 230 OK. Current restricted directory is / Remote system type is UNIX. Using binary mode to transfer files. ftp> help Commands may be abbreviated. Commands are: ! debug mdir qc send $ dir mget sendport site account disconnect mkdir put size append exit mls pwd status ascii form mode quit struct bell get modtime quote system binary glob mput recv sunique bye hash newer reget tenex case help nmap rstatus tick cd idle nlist rhelp trace cdup image ntrans rename type chmod lcd open reset user close ls prompt restart umask cr macdef passive rmdir verbose delete mdelete proxy runique ? ftp> Finalmente, en esta otra página del mismo sitio, le clasifica como "client command", mientras que dice esto: Cita:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#7
|
||||
|
||||
Por cierto... si yo envío un comando HELP a mi servidor ftp con el cliente de las INDY (asi estoy seguro que es el servidor el que responderá) obtengo un flamante timeout. No se si será medida de seguridad o que... lo cierto es que no me responde.
¿a vos si? ¿incluye el comando mdelete? La verdad, estoy convencido que no lo hará! Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#8
|
|||
|
|||
Efectivamente se tratan de comandos del cliente, menudo lio que me había hecho. Ahora solo me falta averiguar una manera de borrar todo un directorio y su contenido sin recurrir a una función recursiva, valga la redundancia
Muchas gracias por tu aclaración, seguiré investigando. |
#9
|
||||
|
||||
mmm... A menos que estes seguro que el directorio, no tendrá subdirectorios, te verás obligado a usar recursividad, o a simularla con una pila, lo que resulta mas costoso en términos de tiempo de desarrollo. ¡No hay de otra!
¿Por qué tanto afán en evitar la recursividad? Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Indy Servidor Multihilos | dekae | Internet | 0 | 03-09-2005 02:26:01 |
Nuevamente.... Servidor a Cliente INDY 10 | m@kio | Internet | 1 | 18-08-2005 19:34:56 |
Mandar de Servidor a Cliente INDY TCP | m@kio | Internet | 3 | 01-08-2005 17:14:35 |
Dudas - Aplicacion Cliente/Servidor con Firebird 1.5 | Hagen | Firebird e Interbase | 1 | 27-02-2004 07:15:38 |
enviando email con nmsntp | jorch_yr | Internet | 3 | 28-08-2003 22:35:40 |
|