faça o download e processe um arquivo por ftp em intervalos definidos, com tratamento de erros, reprogramação e mensagens de status

1

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?

    
por compound eye 14.02.2011 / 11:20

1 resposta

1

Hmm, essa é uma especificação ampla e geral, por isso é difícil ser preciso.

  • Todas as máquinas que fornecem os dados estarão executando o Linux? Se sim, talvez veja o rsync (ou scp ) para baixar os arquivos de dados, pois isso reduzirá a necessidade de tantos scripts de transferência de arquivos (não que haja muito) e possivelmente eliminará a necessidade de" esperar ", o que muitas vezes pode ser ativado por uma mensagem ou evento não planejado.

  • Você não diz que "processamento" será necessário nos arquivos baixados / transferidos, por isso é difícil comentar sobre isso.

  • A reprogramação pode ser tratada pelo cron ou, no caso de um erro de transferência, apenas a leitura do status de saída do rsync ou do scp pode ser suficiente.

  • Como as mensagens de status devem ser enviadas? Se via e-mail, então você poderia usar o padrão, linha de comando ' mail 'comando ou há uma ferramenta adorável que pode enviar SMS mensagens através de um modem conectado.

Em face disso, parece que uma pequena quantidade de scripts do tipo bash iria reunir comandos padrão suficientes para fazer o que você quer, para que você não precise emprestar código de outro lugar, mas se você puder elaborar você provavelmente receberá mais respostas.

    
por 15.02.2011 / 00:22