![通常は手動で実行するいくつかのタスクを連続して実行するにはどうすればよいですか](https://rvso.com/image/623628/%E9%80%9A%E5%B8%B8%E3%81%AF%E6%89%8B%E5%8B%95%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E3%81%AE%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E9%80%A3%E7%B6%9A%E3%81%97%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B.png)
まず、これがシステム管理に関する質問である理由を明確にするために、私の仕事状況を説明させてください。私は、大手通信会社の大規模な電子メール サービス (ユーザー数 500 万人) の運用を行っている、より大規模な IT ソリューション企業で働いています。このポータルの大きな問題の 1 つは、ユーザーがボット ネットに侵入され、おそらく 1 日あたり 10 万通ものスパム メールを送信するために利用されることです。ポータルの苦情メール アドレスには、おそらく 1 分あたり 1 件のペースで ARF レポートが届き、1 日あたり 1,000 ~ 2,000 件に上ります。これらのレポートはすべて手動で確認し、分析、処理、アーカイブする必要があります。このタスクに割り当てられている人員がないため、レポートは基本的に無視され、ポータルの電子メール サーバーがいずれブラックリストに登録されるレベルまでスパムが増加します。これを自動化するフレームワークが必要な理由は、自動的に処理される正当なレポートを識別するためです。一方で、一部のレポートは依然として人間が分析する必要があり、タスクの説明と実行が十分に簡単であれば、海外の担当者に委任できます。手順の実装に支援は必要ないことを強調しておきます。これらのほとんどは 1 行のシェル スクリプトで、外部ツールにアクセスするスクリプトもいくつかあります。さまざまな手順を連結するツールを探しています。
私は、Gearman、procmail、Jenkins、RequestTracker、Ansible (アクター モデルとも言う) を組み合わせたものを考えていましたが、そのようなツールは利用できないと思います。苦情処理は、複数の人が電子メール システムを実行している中規模から大規模の電子メール ポータルでは必ず問題となるため、少なくともその一部を自動化するツールが必要です。
(この説明が質問の関連性を納得させるのに十分であることを願いますが、そうでなければ、何がそうなのか本当にわかりません。あるいは、この質問がこの SO ポータルに間違って配置されているのかもしれません。もしそうなら、どれが当てはまるのでしょうか?)
何らかの方法でファイルを処理し、何らかの決定を行い、いくつかのスクリプトを呼び出し、場合によっては人間の介入を必要とするタスクをいくつか自動化したいと考えています。
私の使用例は次のとおりです(すべてを手作業で行う場合)
- スパムメールの苦情を受け、エディターで開いて検索できるようにする
- メールがいくつかの基準に適合するかどうかを判定する(例:システム内のユーザーによって実際に送信されたか、5日以内かなど)
- メールを送信したユーザーのユーザー名を抽出する
- ユーザーがすでに無効になっている場合は顧客データベースを検索する
- まだアクティブな場合はユーザーを無効にする
- 同じユーザーによる他の問題のあるメールをメールキューで検索する
- 後で分析するためにメールを保管エリアに移動する
- ユーザーが無効になったことをカスタマー サービス担当者に電子メールで通知します (無効になったユーザーのリストを 1 日に 1 回収集する可能性もあります)
これらのステップのほとんどは、たとえば Perl スクリプトを使用して簡単に自動化できますが、特に条件と前提条件があり、いくつかのタスクがすでに保留中である場合にいくつかのタスクをまとめて実行できる場合 (たとえば、10 人のユーザーが見つかった場合、またはタスクが過去 1 時間ほどで実行されていない場合にのみキューを検索する)、連続するステップを自動化する方法がわかりません。
一部の決定には、人間の介入 (自動的に識別できなかったメールの確認など) や決定プロセスの調整が必要になる場合があり、変更されたスクリプトを使用していくつかの手順を再度実行できるようにすると便利です。
何らかのジョブ スケジューラを用意することは可能だと思いますが、必要な手順や条件、前提条件をどのように定義すればよいのでしょうか。
(ここで探しているのは、説明したタスクを実行できるツールではなく、そのほとんどはスクリプトとして簡単に実装できるツールですが、特定のタスク データに対して順番に実行する必要があるタスクのシーケンスを整理するツールです)
Linux 上で実行される FOSS ソリューションの方が好ましいです。
答え1
これには明確な回答が難しいです。なぜなら、いくつかの可動部分があり、人間の介入が必要になる可能性のある場所もあるからです。使い慣れている、または技術的に好ましいスクリプト言語 (たとえば、Windows ショップの場合は PowerShell、それ以外の場合は他の言語) から始めることをお勧めします。人間が確認する必要のない論理部分をグループ化してスクリプト化します。レポートを生成するか、どこかのデータベースにデータを入力して、プロセスを徐々に改良します。特定の環境用に注意深く作成されたスクリプト以外で使用できるユーティリティは 1 つもありません。