загрузка и обработка файла по ftp через заданные интервалы с обработкой ошибок, перепланированием и сообщениями о состоянии

583
compound eye

Я хочу загружать файл данных с удаленного ftp-сервера на мою машину через определенные промежутки времени. Как только файл загружен, я хочу вызвать другой скрипт, который будет обрабатывать файл.

Моя машина разработки - Mac OS X, возможная среда развертывания - Linux.

в деталях:

существует удаленный публичный ftp-сервер, которым управляет бюро погоды, на котором бюро погоды публикует файлы, содержащие прогнозы погоды. Это не моя машина, я могу только скачать с нее. Бюро погоды помещает новый файл здесь каждые шесть часов, время является частью имени файла. У меня на машине будет инструмент, который сможет обрабатывать данные в этих файлах. Я не прошу помощи в разработке этого инструмента. Я прошу помочь склеить части, составить график загрузки и выполнения инструмента.

Что я хочу сделать:

каждые шесть часов я хочу скачать новый файл с ftp-сервера Бюро погоды. если это не удается, я хочу: отправить электронное письмо и перенести загрузку.

если загрузка не удалась через шесть часов, я хочу прекратить попытки получить этот файл, так как теперь должен появиться новый файл с новым именем.

Как только файл успешно загружен, я хочу вызвать инструмент для его обработки. Если инструмент не работает, потому что файл поврежден, он вернет ошибку, и я хочу перенести файл для загрузки

Каким будет стандартный способ автоматизации этого процесса?

Я знаю, что могу использовать cron, чтобы запланировать загрузку и запуск сценария, который будет обрабатывать загруженный файл через регулярные промежутки времени, и я знаю, что мог бы написать немного более сложный сценарий или приложение, которое сделало бы это и добавило бы обработку ошибок, перепланирование и отправка сообщений о статусе.

Но одно из моих требований для этого проекта - написать как можно меньше пользовательского кода, вместо этого я должен попытаться использовать стандартные, проверенные и проверенные инструменты, а если мне придется писать код, попытаться написать максимально простой код., Причиной этого является то, что код потенциально может быть установлен на большое количество машин, и все они должны быть настроены, настроены и поддерживаться разными людьми, еще долго после того, как я уйду из проекта, поэтому намерение состоит в том, чтобы хорошо использовать максимально документированные, хорошо поддерживаемые инструменты.

Это кажется довольно распространенной задачей, в Интернете должны быть инструменты и сценарии, написанные людьми, которые тщательно продумали все, что могло бы пойти не так, когда нужно регулярно загружать и обрабатывать файл с удаленного сервера с ошибкой обработка, перепланировка и отправка сообщений о состоянии.

Это то, что «Ожидать» для?

Чтобы вы посоветовали?

1
Возможно, это получит лучший отклик от stackoverflow, потому что они знают об инструментах, связанных с программированием. И если перенести его туда, я бы посоветовал в идеале, если это возможно, каким-то образом сделать это, пока соединение (автор вопроса) не спит и находится в сети, потому что там быстро реагируют, и тогда многие люди могут заняться чем-то другим! barlop 13 лет назад 0
@barlop: Я не уверен, что это чисто требование к программированию - более вероятно, что это сценарий, объединяющий стандартный набор команд. Linker3000 13 лет назад 0
@ Linker3000 они тоже это охватывают barlop 13 лет назад 0

1 ответ на вопрос

1
Linker3000

Хм, это широкая, общая спецификация, так что трудно быть точным.

  • Будут ли все машины, предоставляющие данные, работать под управлением Linux? Если это так, возможно, обратите внимание на использование rsync (или scp ) для извлечения файлов данных, так как это уменьшит необходимость в большом количестве сценариев передачи файлов (а не того, что их будет много) и, возможно, избавит от необходимости ожидать который часто может быть вызван незапланированным сообщением или событием.

  • Вы не говорите, какая «обработка» потребуется для загруженных / перенесенных файлов, поэтому трудно комментировать.

  • Перепланирование может быть обработано cron или, в случае ошибки передачи, достаточно просто прочитать rsync или состояние выхода scp.

  • Как отправлять статусные сообщения? Если по электронной почте, то вы можете использовать стандартную команду « mail » из командной строки или есть прекрасный инструмент, который может отправлять SMS-сообщения через подключенный модем.

На первый взгляд это выглядит так, как будто небольшое количество сценариев bash-типа объединит достаточно стандартных команд, чтобы делать то, что вы хотите, чтобы вам не нужно было заимствовать код из другого места, но если вы сможете уточнить, вероятно, получите больше ответов.