Как мне запустить несколько задач последовательно, которые я обычно выполняю вручную?

Как мне запустить несколько задач последовательно, которые я обычно выполняю вручную?

Хорошо, прежде всего позвольте мне описать мою рабочую ситуацию, чтобы было понятно, почему этот вопрос относится к системному администрированию. Я работаю в крупной компании по разработке ИТ-решений, которая управляет операциями для крупномасштабной службы электронной почты (5 миллионов пользователей) для крупной телекоммуникационной компании. Одной из основных проблем с этим порталом является то, что пользователи подвергаются взлому с помощью бот-сетей, чтобы их можно было использовать для отправки спама в количестве, вероятно, 100 000 писем в день. Адрес электронной почты для жалоб на портал получает отчеты ARF со скоростью, возможно, 1 в минуту, что составляет, возможно, 1000-2000 сообщений в день. Любой из этих отчетов должен быть просмотрен вручную, проанализирован, обработан и архивирован. Поскольку для этих задач не выделена рабочая сила, отчеты в основном игнорируются, что приводит к увеличению спама до уровня, при котором все серверы электронной почты портала вовремя заносятся в черный список. Причина, по которой я хотел бы иметь фреймворк для автоматизации этого, заключается в том, чтобы идентифицировать законные отчеты, которые будут обрабатываться автоматически, в то время как некоторые отчеты все еще должны быть проанализированы человеком, который может быть делегирован офшорным людям, если задачи достаточно просты для описания и выполнения. Я должен подчеркнуть, что мне не нужна помощь в реализации шагов, большинство из них - однострочные скрипты оболочки плюс несколько, обращающихся к внешним инструментам, я ищу инструмент для связывания различных шагов.

Я думал о чем-то вроде Gearman, procmail, Jenkins, RequestTracker и Ansible (или Actor model, если хотите), но я предполагаю, что такой инструмент недоступен. Должны быть какие-то инструменты для автоматизации хотя бы некоторых частей этого, поскольку обработка жалоб должна быть проблемой на любом среднем или крупном почтовом портале, где более одного человека управляют почтовой системой.

(Надеюсь, этого объяснения достаточно, чтобы мотивировать актуальность вопроса, если нет, то я действительно не знаю, что это такое. Или, может быть, этот вопрос размещен не на этом портале SO, но если так, то какой из них применим?)

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

Мой пример использования следующий (когда я делаю все вручную):

  • получаю жалобу на спам по электронной почте, которую открываю в редакторе, чтобы иметь возможность поискать
  • решить, соответствует ли электронное письмо некоторым критериям (например, оно действительно отправлено пользователем нашей системы, не старше 5 дней и т. д.)
  • извлечь имя пользователя, отправившего почту
  • поиск в базе данных клиентов, если пользователь уже отключен
  • отключить пользователя, если он все еще активен
  • поиск в почтовых очередях других вредоносных писем от того же пользователя
  • переместить почту в зону ожидания для последующего анализа
  • отправить сотрудникам службы поддержки клиентов электронное письмо о том, что пользователь был отключен (вероятно, со сбором списка отключенных пользователей один раз в день)

Большинство этих шагов можно легко автоматизировать, например, с помощью скриптов Perl, но я понятия не имею, как автоматизировать последовательные шаги, особенно если есть условия и предварительные условия, а некоторые задачи можно собрать вместе и запустить, если несколько задач уже ожидают выполнения (например, поиск по очередям только в том случае, если найдено 10 пользователей или задача не запускалась в течение последнего часа или около того).

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

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

(Обратите внимание, что я не ищу инструмент, который может выполнять описанные задачи, большинство из них легко реализуются в виде скриптов, а инструмент для организации последовательности задач, которые должны быть выполнены друг за другом для заданных данных задачи)

Я бы предпочел FOSS-решение для этой цели, работающее на Linux.

решение1

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

Связанный контент