Eu quero baixar um arquivo de dados de um servidor ftp remoto para minha máquina em intervalos regulares. Quando o arquivo for baixado, quero chamar outro script que processará o arquivo.
Minha máquina de desenvolvimento é o mac os x, o eventual ambiente de implementação é o linux.
em detalhes:
existe um servidor ftp público remoto executado pelo bureau do tempo, no qual os arquivos de mensagens do clima contêm as previsões do tempo. Esta não é a minha máquina, só posso fazer o download dela.
O departamento de meteorologia coloca um novo arquivo aqui a cada seis horas, o horário faz parte do nome do arquivo.
Eu terei uma ferramenta na minha máquina que pode processar os dados nesses arquivos. Não estou pedindo ajuda para desenvolver essa ferramenta. Estou pedindo ajuda para juntar as peças, agendando os downloads e execuções da ferramenta.
o que eu quero fazer:
a cada seis horas eu quero baixar o novo arquivo do servidor FTP do departamento de clima.
se isso falhar, eu quero:
enviar um email
e reprogramar o download.
se o download ainda estiver falhando após seis horas, eu quero parar de tentar obter esse arquivo, pois agora deve haver um novo arquivo com um novo nome.
Quando o arquivo for baixado com sucesso, quero chamar minha ferramenta para processar o arquivo.
Se a ferramenta falhar porque o arquivo está corrompido, ele retornará um erro e eu quero reprogramar o arquivo para download
Qual seria a maneira padrão de estoque para automatizar isso?
Eu sei que posso usar o cron para agendar o curl para baixar e executar um script que processará o arquivo baixado em intervalos regulares, e sei que poderia escrever um script um pouco mais complexo ou um aplicativo que faria isso e adicionaria o tratamento de erros , reagendando e enviando e-mails de status.
Mas um dos meus requisitos para este projeto é escrever o menor código possível, em vez disso, eu deveria tentar usar ferramentas existentes padrão, testadas e verdadeiras, e se eu tiver que escrever código, tentar escrever código simples possível. A razão para isso é que o código será potencialmente instalado em um grande número de máquinas, todas as quais precisarão ser ajustadas, customizadas e mantidas por pessoas diferentes, muito tempo depois que eu sair do projeto, então a intenção é usar bem ferramentas documentadas e bem suportadas, tanto quanto possível.
Isso parece uma tarefa tão comum, deve haver ferramentas e scripts em toda a Internet, escritos por pessoas que consideraram cuidadosamente tudo o que poderia dar errado quando você precisa baixar e processar um arquivo de um servidor remoto em intervalos regulares , com tratamento de erros, reagendamento e envio de mensagens de status.
É para isso que 'Expect' é?
O que você recomendaria?