Script Hecho pero en que falla?

lo primero gracias a quien me ayude y esta vez no olbligo ni pido que se me aga, pido ayuda.
el ejercicio era este pero que falla?:

preparar un script en linux al que ejecutar haga:

-conectarse a un servidor FTP que se le pase por parametros por ejemplo: ftp.redris.es, con usuario "anonymous"
-descargar un fichero que se pase por parametros
-desconectar del FTP y mover el fichero descargado a c:/descargas/ftp
-programar el script para que se lance periodicamente (ver crond)

[boma] esta hecho pero....que falla? el tema esta esque lo tiene que hacer automatico y dice que no toy logeado despues de conectar

#!/bin/sh

mkdir /home/borja/escritorio/descargas

HOST='ftp.rediris.es'
USER='anonymous'
PASS='anonymous'
FILE='welcome.msg'

ftp -n $HOST

quote USER $USER
quote PASS $PASS

lcd /home/borja/Escritorio/descargas

get $FILE

bye
Estas ejecutando un monton de comandos FTP totalmente aparte de la ejecucion del cliente ftp en si... desde el punto de vista del script en si, todo lo que tenga que ser ejecutado por el comando "ftp" se le tiene que pasar como parametros de alguna forma, no DESPUES, porque el interprete del shell (Bash, posiblemente), considerara que, despues de finalizar la ejecucion de "ftp", debera ejecutar "lcd", "get" etc, cuando eso tiene que ser ejecutado por el proceso "ftp" llamado anteriormente.

Por cierto, el "mover a c:/tal/cual me ha MATADO" XD

c:?? No os han dado ni una nocion basica de gnu/linux o unix en general, no? xD
jeje,no.

pero eso de c./ es lo de menos porque es con samba y eso se, quisiera saber que falla en el script solo, llevo una semana dandole y nada
Ya te han dicho lo que falla. Si dentro del script escribes:

ftp -n $HOST

El script ejecutará el comando ftp y, como ese comando es un comando interactivo, se quedará esperando en la línea de comandos FTP a que introduzcas comados ftp. Es inútil que escribas los comandos en el script a continuación: no se ejecutan dentro del comando ftp, se suponen que son comandos que tú quieres que se ejecuten en bash.

El comando ftp soporta que le pases un guión de instrucciones por la entrada estándar, así que lo que tú quieres hacer lo puedes resolver con una tubería.
auxiliar escribió:Ya te han dicho lo que falla. Si dentro del script escribes:

ftp -n $HOST

El script ejecutará el comando ftp y, como ese comando es un comando interactivo, se quedará esperando en la línea de comandos FTP a que introduzcas comados ftp. Es inútil que escribas los comandos en el script a continuación: no se ejecutan dentro del comando ftp, se suponen que son comandos que tú quieres que se ejecuten en bash.

El comando ftp soporta que le pases un guión de instrucciones por la entrada estándar, así que lo que tú quieres hacer lo puedes resolver con una tubería.


!!!
Bienvenido de nuevo auxiliar! :)
Uno de los veteranos del foro!!! :D
Un saludo!
Hola, e-Minguez. :)

La verdad es que no me paso por aquí desde hace más de dos años (por lo menos). He tenido una semanita atacada por el sentimentalismo y he comenzado a pasarme por los sitios por los que alguna vez disfruté participando.

Desgraciadamente he visto que las news españolas están muertas.Celebro que no le haya pasado lo mismo a eol.

Espero que mi vuelta sea para quedarme.
auxiliar escribió:Ya te han dicho lo que falla. Si dentro del script escribes:

ftp -n $HOST

El script ejecutará el comando ftp y, como ese comando es un comando interactivo, se quedará esperando en la línea de comandos FTP a que introduzcas comados ftp. Es inútil que escribas los comandos en el script a continuación: no se ejecutan dentro del comando ftp, se suponen que son comandos que tú quieres que se ejecuten en bash.

El comando ftp soporta que le pases un guión de instrucciones por la entrada estándar, así que lo que tú quieres hacer lo puedes resolver con una tubería.


con una tuberia? me podrias decir mas o menos como se hace eso
Leete el uso y aplicación del comando expect, es un comando que interactua con FTP, Telnets... si tienes alguna duda enviame un mensaje o responde aqui, yo hace unas semanas hice algo parecido para el trabajo y me fue bien.
AlvaroInf escribió:Leete el uso y aplicación del comando expect, es un comando que interactua con FTP, Telnets... si tienes alguna duda enviame un mensaje o responde aqui, yo hace unas semanas hice algo parecido para el trabajo y me fue bien.


ok, mañana posteo como me a ido, estare en clase y lo probare
ExplosiusMgs escribió:con una tuberia? me podrias decir mas o menos como se hace eso


Mira lo que hago en un servidor ftp en el que tengo cuenta:

[josem@cebolleta:~]$ ftp ftpperso.free.fr <<FIN
> user XXX YYYY
> cd capturas
> ls
> FIN
drwx------   2 web site      416 Apr  9  2006 .
drwxr-xr-x   9 web site     1056 May 19 06:48 ..
-rw-r--r--   1 web site   136695 Feb  3  2005 2005-01-31_1024x768.jpg
-rw-r--r--   1 web site    38053 Feb  3  2005 2005-01-31_1024x768t.png
-rw-r--r--   1 web site    79522 Feb  3  2005 2005-02-03_1024x768-arriba.jpg
-rw-r--r--   1 web site    78115 Feb  3  2005 2005-02-03_1024x768.jpg
-rw-r--r--   1 web site   142341 May  8  2005 fvwm-radio.jpg
-rw-r--r--   1 web site    43525 Feb  3  2005 tn-2005-02-03_1024x768-arriba.png
-rw-r--r--   1 web site    43424 Feb  3  2005 tn-2005-02-03_1024x768.png


En realidad te he complicado el ejemplo un poco usando los Here Documents de bash. Pero el caso es que escribo todo en la shell de bash y luego se ejecutan los comandos (dentro del cliente ftp). Jamás me meto en la sesión interactiva de ftp. Todo el guión que he escrito en el entorno de bash se lo paso a ftp. La variante con tubería sería meter esos comandos en un ficherito (foo.ftp, por ejemplo) y luego ejecutar:

$ ftp ftpperso.free.fr < foo.ftp


Pero esta variante me obligaría a mantener dos ficheros por separado: el script de bash y el guión de instrucciones ftp. Con los Here Documents podría meterlo todo en el script de bash.

En mi humilde opinión, usar expect para lo que quieres es matar moscas a cañonazos.
9 respuestas