2011-12-14 19 views
1

自分の会社のスキャンサーバーを作成しています。これはnessus、nmap、niktoなどのツールからスキャンを開始するために使用されます。私はPHPでページを書いたので、スキャンが開始されるとプロセスを背景にしてPIDを返します。設計仕様の一部は、スキャンが終了すると、その結果が適切なコンサルタントに電子メールで送信されることです。ここで私はいくつかのアイデアを探しています。私はこれをどうやってやるのか分かりません。複数のプロセスが実行されているときにプロセスが終了したときにアクションを実行する方法

私は、PHPスクリプトがPython(私のメイン言語)スクリプトのインスタンスにPIDを供給するようにするのが最良でしょうか?これは、プロセスが終了したかどうかを常にチェックしていますか?私はこのプロセスチェックループをPHPページに入れようとしましたが、これは明らかに、PHPページが完了するまでスキャンを待機しますが、残念なことに複数のスキャンが実行されるため、私のためには機能しません。

または、プロセスに関する状態情報を格納したデータベースを作成する方がいいですか?私はデータベースの経験はありませんが、これは学ぶのによい時間です。

提案がありますか?私がGoogleでできるアイデアでさえ、非常に高く評価されます!私はこの種の問題に直面したとき

おかげで

答えて

2

、私は通常、全体の仕事をしてPythonのデーモンを行い、そしてちょうどこのPythonのデーモンにメッセージを送信するPHPを持っています。これらのメッセージは、ディレクトリ内のファイルの束のように、常にシンプルなものにすることができます。

このインパクトがどの程度良いかは、アプリケーションの規模によって異なります。 script.phpで、

exec("/path/to/file | php /some/php/script.php > /dev/null 2>&1 &"); 

その後:

exec("/path/to/file > /dev/null 2>&1 &"); 

...、あなただけの途中で別のスクリプトを置くことができ、その場合には:

+0

:(またはしたい場合はPythonでそれを行う)、あなたはこのような何かを行うことができます。面白い!私はそれを調べます、ありがとう。 – Jingo

2

は、私はあなたがこのようなプロセスの何かを始めていると推定します私もPythonのデーモンと考えられていなかった

while (!feof(STDIN)) { 
    sleep(1); // ...or something less horrible that also avoids racing 
} 

// When you get here, the process has finished 
+0

ブリリアント!私はそれが好きです! –

+0

問題は、*さらに多くの*プロセスを作成することです...あなたが一度にたくさんのことをすると、サーバーリソースを食べる可能性があります。 – DaveRandom

+0

助けてくれてありがとう - 私はプロセスbtwを開始するために使用しているコードです。それは良いアイデアのように思えますが、より多くのプロセスを作成することが問題になるかもしれません。私は、スキャンページから生成されたプロセスのx個以下が実行されていることを確認するためのチェックを行うコードを実装する必要もあると思います。それをPHPコードに組み込むことは可能でしょうか? – Jingo

関連する問題