Wie kann ich mehrere Aufgaben nacheinander ausführen, die ich normalerweise manuell ausführe?

Wie kann ich mehrere Aufgaben nacheinander ausführen, die ich normalerweise manuell ausführe?

Ok, lassen Sie mich zunächst meine Arbeitssituation beschreiben, damit klar ist, warum dies eine Frage zur Systemadministration ist. Ich arbeite bei einem größeren IT-Lösungsunternehmen, das für ein großes Telekommunikationsunternehmen einen E-Mail-Dienst im großen Maßstab (5 Millionen Benutzer) betreibt. Eines der Hauptprobleme dieses Portals besteht darin, dass Benutzer durch Botnetze kompromittiert werden, sodass sie zum Versenden von Spam-Mails in einer Größenordnung von wahrscheinlich 100.000 pro Tag verwendet werden können. Die Beschwerde-E-Mail-Adresse für das Portal erhält ARF-Berichte mit einer Rate von vielleicht 1 pro Minute, was etwa 1000-2000 pro Tag entspricht. Jeder dieser Berichte müsste manuell geprüft, analysiert, verarbeitet und archiviert werden. Da für diese Aufgaben keine Arbeitskräfte abgestellt sind, werden die Berichte im Grunde ignoriert, was zu einem Anstieg des Spams in einem solchen Ausmaß führt, dass alle E-Mail-Server des Portals früher oder später auf die schwarze Liste gesetzt werden. Der Grund, warum ich gerne ein Framework hätte, um dies zu automatisieren, besteht darin, die legitimen Berichte zu identifizieren, die automatisch verarbeitet werden sollen, während einige Berichte noch von einem Menschen analysiert werden müssen, was an Mitarbeiter außerhalb der Firma delegiert werden könnte, wenn die Aufgaben einfach genug zu beschreiben und auszuführen sind. Ich möchte betonen, dass ich keine Hilfe bei der Implementierung der Schritte benötige. Die meisten davon sind 1-zeilige Shell-Skripte und einige wenige, die auf externe Tools zugreifen. Ich suche nach einem Tool, um die verschiedenen Schritte miteinander zu verknüpfen.

Ich dachte an etwas in der Art von Gearman trifft Procmail trifft Jenkins trifft RequestTracker trifft Ansible (trifft sozusagen auf das Actor-Modell), aber ich gehe davon aus, dass ein solches Tool nicht verfügbar ist. Es muss Tools geben, um zumindest einige Teile davon zu automatisieren, da die Beschwerdebearbeitung bei jedem mittelgroßen bis großen E-Mail-Portal, bei dem mehr als eine Person das E-Mail-System betreibt, ein Problem sein muss.

(Ich hoffe, diese Erklärung reicht aus, um die Relevanz der Frage zu begründen. Wenn nicht, weiß ich wirklich nicht, was sie ist. Oder vielleicht ist diese Frage in diesem SO-Portal an der falschen Stelle, aber wenn ja, welche ist zutreffend?)

Ich würde einige Aufgaben automatisieren, die irgendwie Dateien verarbeiten, einige Entscheidungen treffen, einige Skripte aufrufen und in einigen Fällen einige Aufgaben haben, die ein menschliches Eingreifen erfordern.

Mein Beispielanwendungsfall ist der folgende (wenn ich das Ganze von Hand mache):

  • eine E-Mail-Spambeschwerde erhalten, die ich im Editor öffne, um sie durchsuchen zu können
  • Entscheiden Sie, ob die E-Mail bestimmte Kriterien erfüllt (z. B. wurde sie wirklich von einem Benutzer in unseren Systemen gesendet, ist nicht älter als 5 Tage usw.)
  • Extrahieren Sie den Benutzernamen des Benutzers, der die E-Mail gesendet hat
  • Durchsuchen Sie die Kundendatenbank, ob der Benutzer bereits deaktiviert ist
  • Deaktivieren Sie den Benutzer, wenn er noch aktiv ist
  • Durchsuchen Sie die Mail-Warteschlangen nach anderen anstößigen E-Mails desselben Benutzers
  • Verschieben Sie die E-Mails in einen Wartebereich, um sie später zu analysieren
  • Senden Sie dem Kundendienst eine E-Mail, dass ein Benutzer deaktiviert wurde (wahrscheinlich mit einer einmal täglich gesammelten Liste deaktivierter Benutzer).

Die meisten dieser Schritte könnten beispielsweise mit Perl-Skripten leicht automatisiert werden, aber ich habe keine Ahnung, wie man die aufeinanderfolgenden Schritte automatisiert, insbesondere wenn es Bedingungen und Vorbedingungen gibt und einige Aufgaben zusammengefasst und ausgeführt werden könnten, wenn bereits einige Aufgaben ausstehen (z. B. die Warteschlangen nur durchsuchen, wenn entweder 10 Benutzer gefunden wurden oder die Aufgabe in der letzten Stunde oder so nicht ausgeführt wurde).

Manche Entscheidungen können menschliches Eingreifen erfordern (z. B. das Betrachten der E-Mails, die nicht automatisch identifiziert werden konnten) oder die Feinabstimmung des Entscheidungsprozesses, sodass es hilfreich wäre, einige Schritte mit einem geänderten Skript erneut ausführen zu können.

Ich gehe davon aus, dass es möglich wäre, eine Art Job-Scheduler zu haben, frage mich aber, wie die notwendigen Schritte, Bedingungen und Voraussetzungen definiert werden können.

(Bitte beachten Sie, dass ich nicht nach einem Tool suche, das die beschriebenen Aufgaben erledigen kann. Die meisten davon lassen sich leicht als Skripte implementieren. Ich suche jedoch nach einem Tool zum Organisieren der Abfolge von Aufgaben, die für bestimmte Aufgabendaten nacheinander ausgeführt werden müssen.)

Ich würde hierfür eine FOSS-Lösung unter Linux bevorzugen.

Antwort1

Dies lässt sich nur schwer eindeutig beantworten, da es einige bewegliche Teile und einige Stellen gibt, an denen wahrscheinlich menschliches Eingreifen erforderlich ist. Ich würde empfehlen, ganz oben mit einer Skriptsprache zu beginnen, mit der Sie entweder vertraut sind oder die technisch bevorzugt wird (wenn Sie beispielsweise ein Windows-Shop sind, dann PowerShell, wenn Sie so ziemlich alles andere sind – verwenden Sie irgendetwas anderes). Gruppieren Sie Ihre logischen Teile, die nicht von einem Menschen überprüft werden müssen, und schreiben Sie ein Skript dafür. Generieren Sie Berichte oder füllen Sie irgendwo eine Datenbank aus und verfeinern Sie den Prozess langsam. Ich kenne kein einziges Dienstprogramm, das Sie außerhalb eines sorgfältig geschriebenen Skripts für Ihre spezielle Umgebung verwenden könnten.

verwandte Informationen