Хорошо, прежде всего позвольте мне описать мою рабочую ситуацию, чтобы было понятно, почему это вопрос, относящийся к системному администрированию. Я работаю в более крупной компании, занимающейся ИТ-решениями, которая обслуживает крупномасштабную службу электронной почты (5 миллионов пользователей) для крупной телекоммуникационной компании. Одна из основных проблем этого портала - это то, что пользователи скомпрометированы бот-сетями, чтобы их можно было использовать для рассылки спам-писем порядка 100 000 писем в день. На адрес электронной почты для жалоб на портале приходят сообщения ARF со скоростью, возможно, 1 в минуту, что составляет, возможно, 1000-2000 в день. Любой из этих отчетов придется просматривать вручную, анализировать, обрабатывать и архивировать. Поскольку для выполнения этих задач не назначены никакие человеческие ресурсы, отчеты в основном игнорируются, что приводит к увеличению количества спама до уровня, при котором все почтовые серверы портала вовремя попадают в черный список. Причина, по которой я хотел бы иметь структуру для автоматизации этого, заключалась бы в том, чтобы идентифицировать легальные отчеты, которые должны обрабатываться автоматически, в то время как некоторые отчеты все еще должны анализироваться человеком, который может быть делегирован оффшорным людям, если задачи достаточно просты описать и исполнить. Я должен подчеркнуть, что мне не нужна помощь в реализации шагов, большинство из них - это однострочные сценарии оболочки плюс несколько, обращающихся к внешним инструментам, я ищу инструмент, чтобы связать вместе различные шаги.
Я думал о чем-то вроде Gearman, procmail, Jenkins, RequestTracker, Ansible (соответствует модели Actor, если хотите), но я предполагаю, что такой инструмент недоступен. Должны быть некоторые инструменты для автоматизации хотя бы некоторых частей этого, поскольку обработка жалоб должна быть проблемой на любом среднем или крупном почтовом портале, где более одного человека используют почтовую систему.
(Надеюсь, этого объяснения достаточно, чтобы обосновать актуальность вопроса, если нет, то я действительно не знаю, что есть. Или, может быть, этот вопрос неправильно размещен на этом портале SO, но если да, то какой из них применим?)
Я хотел бы автоматизировать несколько задач, которые каким-то образом обрабатывают файлы, принимают некоторые решения, вызывают некоторые сценарии и в некоторых случаях имеют некоторые задачи, требующие вмешательства человека.
Мой пример использования следующий (когда я делаю все вручную)
Большинство этих шагов можно легко автоматизировать, например, с помощью perl-скрипты, но я не знаю, как автоматизировать последовательные шаги, особенно если есть условия и предварительные условия, и некоторые задачи можно собрать вместе и запустить, если есть несколько задач, уже ожидающих выполнения (например, поиск в очередях, только если 10 пользователей были найдены или задача не запускалась в последний час или около того).
Некоторые решения могут потребовать вмешательства человека (например, просмотр писем, которые не могут быть идентифицированы автоматически) или настройки процесса принятия решения, чтобы было полезно иметь возможность снова выполнить некоторые шаги с измененным сценарием.
Я предполагаю, что можно было бы иметь какой-то планировщик заданий, но мне интересно, как определить необходимые шаги, условия и предварительные условия.
(Обратите внимание, что я не ищу инструмент, который может выполнять описанные задачи, большинство из них легко реализуется в виде скриптов, а инструмент для организации последовательности задач, которые должны быть выполнены друг за другом для заданных данных задачи)
Я бы предпочел решение FOSS для этого, работающее в Linux.
На этот вопрос сложно ответить однозначно, потому что есть несколько движущихся частей и некоторые места, где, вероятно, потребуется вмешательство человека. Я бы рекомендовал начинать с языка сценариев, который вам удобен или технически предпочтителен (например, если вы работаете в магазине Windows, тогда PowerShell, если вы занимаетесь чем-то еще - используйте что-нибудь еще). Сгруппируйте свои логические части, на которые не нужно смотреть человеку, и запишите их. Создавайте отчеты или заполняйте базу данных где-нибудь и постепенно улучшайте процесс. Я не знаю ни одной утилиты, которую вы могли бы использовать вне тщательно написанного сценария для вашей конкретной среды.