Sua pergunta compõe, na verdade, três questões: 1) Como baixar um arquivo (com auth) 2) Como fazer upload de um arquivo (com auth) 3) Como agendar um trabalho CRON
Minha primeira pergunta é como você deseja armazenar o id / passwd
ad 1) Você pode usar curl
e wget
dependendo do que for melhor para o seu caso de uso. Eu recomendo ler um post excelente de Daniel Stenberg enrolar vs Wget para entender as diferenças (um resumo rápido - curl
é mais amigável ao desenvolvedor e também é uma biblioteca que um wget
é um comando).
Estou recomendando o uso de certificados sem o usuário / senha, como tal, seria visível para todos que tivessem o seu ID ou grupo.
No meu exemplo, usarei curl
e certificado:% curl --cert certificate_file.pem https://example.com/example.xml
ad 2) Para carregar um arquivo
curl -T example.xml --cert certificate_file.pem ftps://ftp.server.com/remotedir/
ad 3) Formato Cron:
# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
0 2 12 * * /usr/bin/find
Você só usa crontab -e
para editar seu arquivo crontab. Outras maneiras podem levar à corrupção de arquivos.
Se você deseja executar o arquivo toda quinta-feira às 8h da manhã, faça do seguinte modo:
0 8 1-31 1-12 4 /path/your_script.sh
ou você pode fazê-lo com *
: 0 8 * * 4 /path/your_script.sh
.
Se você quiser ler mais, faça-o em: Uso e exemplos de Cron e Crontab
Agora, junte tudo:
#!/bin/bash
# $1 is your command line input (e.g. example.xml)
file_download=$1
file_upload=$2
actual_download="curl --cert certificate_file.pem https://example.com/$file_download"
eval $actual_download
if [ -e "$file_upload" ] then
actual_upload="curl -T $file_upload --cert certificate_file.pem ftps://ftp.server.com/remotedir"
eval $actual_upload
else
echo "The $file_upload does not exist!"
fi
Você então executaria o arquivo:
your_script.sh /path/example_download.xml /path/example_upload.xml