É possível automatizar o FTP no Terminal?

4

Quero adicionar um comando FTP ao meu crontab para baixar automaticamente um arquivo. Como eu faço isso?

daviesgeek
fonte
Bem-vindo ao Unix maravilhas no Mac :)
Pitto
você pode usar o launchd em vez do cron, pois agora é o agendador oficial suportado pela apple. Cron ainda funciona, mas launchd é o caminho do futuro: D
Bringel
Quando isso mudou?
daviesgeek

Respostas:

5

A maneira mais fácil de fazer isso é com o wget . Por exemplo:

Ian-Cs-MacBook-Pro:ianc ian$ wget ftp://gnjilux.cc.fer.hr/welcome.msg
--2011-08-02 19:48:00--  ftp://gnjilux.cc.fer.hr/welcome.msg
           => `welcome.msg'
Resolving gnjilux.cc.fer.hr... 161.53.74.67
Connecting to gnjilux.cc.fer.hr|161.53.74.67|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD not needed.
==> SIZE welcome.msg ... 1462
==> PASV ... done.    ==> RETR welcome.msg ... done.
Length: 1462 (1.4K) (unauthoritative)

100% [======================================================================================================================================================================================================================================>] 1,462       --.-K/s   in 0s      

2011-08-02 19:48:03 (63.4 MB/s) - `welcome.msg' saved [1462]

wgetsuporta opções para fornecer um nome de usuário ( --user = usuário ) e senha ( --password = password ) se o acesso anônimo FTP não está disponível. E um modo - silencioso , para que ele seja cronamigável e não encha sua caixa de entrada local sem mensagens para downloads bem-sucedidos.

Ian C.
fonte
Eu usei o wget durante todo o último ano escolar para baixar notas do meu professor automaticamente assim. Me salvou de não ter anotações algumas vezes, pois nunca tive que me lembrar de recebê-las.
Bringel
3

O script BASH abaixo funcionará

#!/bin/bash

remotefile="/path/to/ftp/server/file.png"
hostname="ftp.server.net"
username="ftpuser"
password="ftppass"
ftp -in $hostname<<EOF
quote USER $username
quote PASS $password

binary
get $remotefile $HOME/temp/file.png
quit
EOF
Conorgriffin
fonte
3

Você pode usar curl que já está disponível no Mac OSX e pode (para ftp não-anônimo) usar logins armazenados em .netrc (para que a senha não apareça na lista ps)

FTP simples de baunilha anônimo

curl ftp://your.server.name/path/to/file.tar.gz > ~you/Downloads/file.tar.gz

Usando .netrc

curl --netrc ftp://your.server.name/path/to/file.tar.gz > ~you/Downloads/file.tar.gz

Especifique usuário / senha diretamente (visível no ps depois)

curl --user "user:password" ftp://your.server.name/path/to/file.tar.gz > ~you/Downloads/file.tar.gz
nohillside
fonte