Se você quiser criar um script que entre outras coisas transfere arquivos então, você vai querer saber como se trabalha com FTP de forma não-interativa.
Vamos primeiro estudar a forma interativa:
1. comando ftp host
$ ftp carcara
Connected to carcara.pcs.usp.br.
220 PCS - Ftp server
Name (carcara:jkinoshi):
Este comando começa a funcionar de forma interativa pedindo o user + password.
2. comando ftp -n host
]$ ftp -n carcara
Connected to carcara.pcs.usp.br.
220 PCS - Ftp server
ftp> user jkinoshi minhasenha
331 Password required for jkinoshi.
230 User jkinoshi logged in.
ftp> ls ve*
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
-rw-r--r-- 1 jkinoshi docentes 1311 Jul 20 18:14 ve.pl
-rwx------ 1 jkinoshi docentes 413 Dec 11 18:44 vehash.pl
-rwx------ 1 jkinoshi docentes 375 May 13 2000 vehash.pl~
226 Transfer complete.
Por causa da opção -n, este comando não inicia pedindo o user + password; isto é feito através do comando user. Após isto você pode executar comandos os comandos permitidos no ftp. Obs: jkinoshi é o meu user, troque pelo seu.
Agora a forma não interativa:
A idéia é simplesmente ter um arquivo de comandos como:
user jkinoshi minhasenha
ls ve*
e fazer um pipe com "ftp -n carcara".
Uma forma é gravar os comandos a serem dados em um arquivo (ex: lixo.ftp) e fazer um pipe com o comando ftp assim:
$ cat lixo.ftp | ftp -n carcara
-rw-r--r-- 1 jkinoshi docentes 1311 Jul 20 18:14 ve.pl
-rwx------ 1 jkinoshi docentes 413 Dec 11 18:44 vehash.pl
-rwx------ 1 jkinoshi docentes 375 May 13 2000 vehash.pl~
A versão definitiva:
Quando se transfere vários arquivos usando mget ou mput então o ftp pede uma confirmação para o usuário. Para desabilitar isto faça:
$ cat lixo.ftp | ftp -n -i carcara
Com isso você pode, por exemplo, enviar arquivos em certos períodos do dia através do cron.
^JC