0

Linuxでrubyスクリプト(たとえばlin_r.rb)からコンソールアプリケーション(たとえばwin_a.exe;コマンドラインパラメーターがほとんどない)を実行しようとしています。win_a.exeは、Windows Server 2008上のWindowsサービスと対話しています。lin_r.rbを介して特定の時点でwin_a.exeを実行したい(理由は、現時点では、win_a.exeに渡す必要のあるパラメーターがほとんどないためです。いくつかの結果を得る)

ゴール

オンラインで検索しましたが、役立つリンクが見つかりませんでした。 私の頭の中の1つの解決策は次のとおりです。

  1. Windows上にNFS共有を作成し、それをLinuxにマップします。

  2. Linux:lin_r.rbから新しいファイル(NFS共有で作成する必要があります)にパラメーター/コマンドを書き込みます

  3. ウィンドウ:新しいファイルを探しているウォッチドッグプログラム(これを書く必要があります)。見つかった場合は、パラメータを指定してwin_a.exeを実行し、結果を新しい出力ファイルに書き込みます。

  4. Linux:そうだね!結果を得た

これは良いアプローチですか?どう思いますか?

ありがとう、Vipul

4

1 に答える 1

1

あなたのアプローチは機能する可能性がありますが、これを実装する場合は、NFS の代わりに HTTP を使用します。関連する両方のコンピューターが既に HTTP 要求を送受信できる可能性が高いため、セットアップは NFS より少なくする必要があります。

基本的なアプローチは、Linux ベースのスクリプトで Windows マシンに HTTP 要求を行い、.exe へのパラメーターをクエリ パラメーターとして指定することです (GET 要求を使用する場合)。Windows 側では、「ウォッチドッグ」プログラムは、Linux マシンからの要求に応答し、指定されたオプションでプログラムを実行し、結果を返す小さな Web サービスになります。

Windows マシン上の Web サービスは、好みのテクノロジを使用できます。Sinatra+Thin を使用する可能性が高いですが、選択はあなた次第です。

NFS ベース、HTTP ベース、またはその他のどのアプローチを採用する場合でも、必ずセキュリティを考慮する必要があります。つまり、lin_r.rb から受け取った引数をやみくもに win_a.exe プログラムに渡すべきではありません。特定の引数のみを受け入れる必要があり、要求を行っている (または NFS を使用している場合はファイルを書き込んでいる)人物が、アクセスを許可されている人物であることを確認する努力をする必要があります。

于 2013-02-12T20:40:37.550 に答える