¿Cómo puedo ejecutar algunas tareas consecutivas que normalmente ejecuto manualmente?

¿Cómo puedo ejecutar algunas tareas consecutivas que normalmente ejecuto manualmente?

Bien, primero que nada permítanme describir mi situación laboral para que quede claro por qué esta es una pregunta relacionada con la administración del sistema. Trabajo en una empresa de soluciones de TI más grande que ejecuta operaciones para un servicio de correo electrónico a gran escala (5 millones de usuarios) para una importante empresa de telecomunicaciones. Uno de los principales problemas de este portal es que los usuarios se ven comprometidos por redes de bots que pueden usarse para enviar correos no deseados del orden de probablemente 100.000 por día. La dirección de correo electrónico de quejas del portal recibe informes ARF a una velocidad de quizás 1 por minuto, lo que equivale a entre 1000 y 2000 por día. Cualquiera de estos informes tendría que examinarse manualmente, analizarse, procesarse y archivarse. Dado que no hay mano de obra asignada a estas tareas, los informes básicamente se ignoran, lo que genera un aumento del spam a un nivel en el que todos los servidores de correo electrónico del portal aparecen en la lista negra en un momento u otro. La razón por la que me gustaría tener un marco para automatizar esto sería para identificar los informes legítimos que se procesarán automáticamente, mientras que algunos informes aún deben ser analizados por un humano que podría delegarse a personas en el extranjero si las tareas son lo suficientemente sencillas. describir y ejecutar. Debo enfatizar que no necesito ayuda para implementar los pasos, la mayoría de estos son scripts de shells de 1 línea más algunos que acceden a herramientas externas. Estoy buscando una herramienta para unir los diferentes pasos.

Estaba pensando en algo parecido a Gearman se encuentra con procmail, se encuentra con Jenkins, se encuentra con RequestTracker y se encuentra con Ansible (se encuentra con el modelo Actor si lo desea), pero supongo que dicha herramienta no está disponible. Tiene que haber algunas herramientas para automatizar al menos algunas partes de esto, ya que el procesamiento de quejas tiene que ser un problema en cualquier portal de correo electrónico de mediana a gran escala donde más de una persona esté ejecutando el sistema de correo electrónico.

(Espero que esta explicación sea suficiente para motivar la relevancia de la pregunta; si no, realmente no sé cuál es. O tal vez esta pregunta esté mal colocada en este portal SO, pero si es así, ¿cuál es aplicable?)

Me gustaría automatizar algunas tareas que procesan archivos de alguna manera, tomar algunas decisiones, llamar a algunos scripts y, en algunos casos, realizar algunas tareas que requieren intervención humana.

Mi caso de uso de ejemplo es el siguiente (cuando hago todo a mano)

  • Recibo una queja de spam por correo electrónico, que abro en el editor para poder buscar
  • decidir si el correo electrónico cumple con algunos criterios (por ejemplo, realmente lo envió un usuario en nuestros sistemas, no tiene más de 5 días, etc.)
  • extraer el nombre de usuario del usuario que ha enviado el correo
  • buscar en la base de datos de clientes si el usuario ya está deshabilitado
  • deshabilitar al usuario si aún está activo
  • buscar en colas de correo otros correos electrónicos ofensivos del mismo usuario
  • mover los correos a un área de espera para analizarlos más tarde
  • enviar a la gente de servicio al cliente un correo electrónico informando que un usuario fue deshabilitado (probablemente con una lista recopilada de usuarios deshabilitados una vez al día)

La mayoría de estos pasos podrían automatizarse fácilmente con, por ejemplo, scripts de Perl, pero no tengo idea de cómo automatizar los pasos consecutivos, especialmente si existen condiciones y condiciones previas y algunas tareas se pueden recopilar y ejecutar si ya hay algunas tareas pendientes ( por ejemplo, busque en las colas solo si se han encontrado 10 usuarios o la tarea no se ejecutó en la última hora aproximadamente).

Algunas decisiones pueden requerir intervención humana (por ejemplo, mirar los correos que no se pudieron identificar automáticamente) o ajustar el proceso de decisión para que sea útil poder ejecutar algunos pasos nuevamente con un script modificado.

Supongo que sería posible tener algún tipo de programador de trabajos, pero me pregunto cómo definir los pasos, condiciones y condiciones previas necesarios.

(Tenga en cuenta que no busco una herramienta que pueda realizar las tareas descritas, la mayoría de ellas se implementan fácilmente como scripts, sino una herramienta para organizar la secuencia de tareas que deben realizarse una tras otra para una tarea determinada).

Preferiría una solución FOSS para esto ejecutándose en Linux.

Respuesta1

Es difícil responder definitivamente a esto porque hay algunas partes móviles y algunos lugares donde probablemente se necesite la intervención humana. Recomendaría comenzar desde arriba con un lenguaje de secuencias de comandos con el que se sienta cómodo o que sea técnicamente preferido (por ejemplo, si es una tienda de Windows, entonces PowerShell, si es cualquier otra cosa, use cualquier otra cosa). Agrupe las partes lógicas que no necesitan ser examinadas por un humano y escriba un guión. Genere informes o complete una base de datos en algún lugar y refine lentamente el proceso. No conozco una sola utilidad que puedas usar fuera de un script cuidadosamente escrito para tu entorno particular.

información relacionada