Como posso executar algumas tarefas consecutivamente que normalmente executo manualmente

Como posso executar algumas tarefas consecutivamente que normalmente executo manualmente

Ok, antes de mais nada, deixe-me descrever minha situação de trabalho para que fique claro por que esta é uma questão relacionada à administração do sistema. Trabalho em uma grande empresa de soluções de TI que executa operações para um serviço de e-mail de grande escala (5 milhões de usuários) para uma grande empresa de telecomunicações. Um dos principais problemas deste portal é que os usuários são comprometidos por redes de bots para que possam ser usados ​​para enviar e-mails de spam na ordem de provavelmente 100.000 por dia. O endereço de e-mail de reclamação do portal recebe relatórios ARF a uma taxa de talvez 1 por minuto, totalizando talvez 1.000-2.000 por dia. Qualquer um desses relatórios teria que ser analisado manualmente, analisado, processado e arquivado. Como não há mão de obra designada para essas tarefas, os relatórios são basicamente ignorados, resultando no aumento do spam a um nível que todos os servidores de e-mail do portal são colocados na lista negra em um momento ou outro. A razão pela qual eu gostaria de ter uma estrutura para automatizar isso seria identificar os relatórios legítimos a serem processados ​​automaticamente, enquanto alguns relatórios ainda precisam ser analisados ​​por um ser humano que poderia ser delegado a pessoas offshore se as tarefas forem suficientemente fáceis descrever e executar. Devo enfatizar que não preciso de ajuda para implementar as etapas, a maioria delas são scripts de shell de 1 linha, além de alguns que acessam ferramentas externas, estou procurando uma ferramenta para encadear as diferentes etapas.

Eu estava pensando em algo como Gearman encontra procmail encontra Jenkins encontra RequestTracker encontra Ansible (encontra o modelo Actor se você quiser), mas presumo que tal ferramenta não esteja disponível. Deve haver algumas ferramentas para automatizar pelo menos algumas partes disso, uma vez que o processamento de reclamações deve ser um problema em qualquer portal de e-mail de médio a grande porte, onde mais de uma pessoa administra o sistema de e-mail.

(Espero que esta explicação seja suficiente para motivar a relevância da questão, se não, realmente não sei o que é. Ou talvez esta questão esteja errada neste portal SO, mas em caso afirmativo, qual é aplicável?)

Gostaria de automatizar algumas tarefas que processam arquivos de alguma forma, tomar algumas decisões, chamar alguns scripts e em alguns casos ter algumas tarefas que requerem intervenção humana.

Meu exemplo de caso de uso é o seguinte (quando faço tudo manualmente)

  • receber uma reclamação de spam por e-mail, que abro no editor para poder pesquisar
  • decida se o e-mail atende a alguns critérios (por exemplo, é realmente enviado por um usuário em nossos sistemas, não tem mais de 5 dias, etc.)
  • extraia o nome de usuário do usuário que enviou o e-mail
  • pesquisar no banco de dados do cliente se o usuário já estiver desabilitado
  • desativar o usuário se ainda estiver ativo
  • pesquise nas filas de e-mail outros e-mails ofensivos do mesmo usuário
  • mova os e-mails para uma área de espera para analisar mais tarde
  • enviar ao pessoal de atendimento ao cliente um e-mail informando que um usuário foi desabilitado (provavelmente com uma lista coletada de usuários desabilitados uma vez por dia)

A maioria dessas etapas poderia ser facilmente automatizada com, por exemplo, scripts Perl, mas não tenho ideia de como automatizar as etapas consecutivas, especialmente se houver condições e pré-condições e algumas tarefas puderem ser coletadas e executadas se já houver algumas tarefas pendentes ( por exemplo, pesquise nas filas apenas se 10 usuários foram encontrados ou se a tarefa não foi executada na última hora ou mais).

Algumas decisões podem exigir intervenção humana (por exemplo, olhar para os e-mails que não puderam ser identificados automaticamente) ou ajustar o processo de decisão para que seja útil poder executar algumas etapas novamente com um script alterado.

Presumo que seria possível ter algum tipo de agendador de tarefas, mas me pergunto como definir as etapas, condições e pré-condições necessárias.

(Observe que não procuro uma ferramenta que possa realizar as tarefas descritas, a maioria delas são facilmente implementadas como scripts, mas uma ferramenta para organizar a sequência de tarefas que devem ser realizadas uma após a outra para determinados dados de tarefa)

Eu preferiria uma solução FOSS para rodar no Linux.

Responder1

É difícil responder definitivamente porque há algumas partes móveis e alguns lugares onde a intervenção humana é provavelmente necessária. Eu recomendo começar do início com uma linguagem de script com a qual você se sinta confortável ou seja tecnicamente preferido (por exemplo, se você for uma loja do Windows, então o PowerShell, se você for qualquer outra coisa - use qualquer outra coisa). Agrupe suas partes lógicas que não precisam ser examinadas por um humano e crie um script. Gere relatórios ou preencha um banco de dados em algum lugar e refine lentamente o processo. Não conheço um único utilitário que você possa usar fora de um script cuidadosamente escrito para seu ambiente específico.

informação relacionada