Boletim ViaLinuxis

Jorge Kinoshita
FTP não interativo

(un)subscribe
19-12-00

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