- PR -

LinuxからWindowsのプログラムを起動

投稿者投稿内容
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2005-10-06 10:18
Red Hat Linux(AS3.0)からWindows2003サーバ上にあるプログラム(exe)を起動するにはどのような方法がありますでしょうか?
イメージとしてはRed HatとWindowsにそれぞれプログラムを用意して
Red Hat側のプログラムからWindowsのプログラムを起動この時引数がいくつかあります
Windows側ではプログラムの実行結果をRed Hat側に戻す
ご存知の方がいらっしゃればご教授願います
ひさ
常連さん
会議室デビュー日: 2005/05/10
投稿数: 46
投稿日時: 2005-10-06 10:44
コマンドラインのプログラムならrshとかTelnetでできるのではないでしょうか。
この方法では、GUIのプログラムは使えませんが。。。
おっきー
大ベテラン
会議室デビュー日: 2003/05/01
投稿数: 104
投稿日時: 2005-10-06 14:08
Windows側にWebサーバを立てて
Linux 側からリクエストを送るってのはどうでしょう?

特に制約がないなら、分散オブジェクトを利用するかな。
HORB , dRuby などなど



[ メッセージ編集済み 編集者: おっきー 編集日時 2005-10-06 14:10 ]
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2005-10-06 15:39
こんにちわ.

簡単なものなら rsh を使って at などで自動実行させるとか.
具体的に「こんなことがしたい」の内容があったほうが
回答が出やすいのでは?
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2005-10-07 17:18
みなさん、いろいろありがとうございます

>Windows側にWebサーバを立てて
>Linux 側からリクエストを送るってのはどうでしょう?
>特に制約がないなら、分散オブジェクトを利用するかな。
>HORB , dRuby などなど
Linux側はどうもWebサーバが立っているようです(すみませんはっきりしなくて..)
ですのでWindows側にもWebサーバ(IIS+ASP)を立ててLinuxからPOSTしてWindowsでGETし
その内容をASPが判断しプログラム(exe)を実行するというのはできますでしょうか?
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2005-10-11 18:56
>Windows側にWebサーバを立てて
>Linux 側からリクエストを送るってのはどうでしょう?
この方法に関してもう少し教えていただけますでしょうか
Linux側からリクエストを送る場合ですが
Webの画面を利用すれば
<FORM name="formHoge" action="http://Winserver:8088/Hoge1.asp" method="post">
入力1: <input type=text name ="input1">
<BR>
input type=submit value="テスト">
</FORM>
このようにしてHTTPでWindowsのIISへ送るというイメージでしょうか?
(WindowsのWebサーバはIISで考えています)

できればWebの画面を利用しないでリクエストを送りたいのですが
どのような言語でどうすればいいのか見当がつきません...
まったくの素人で申し訳ございませんがもう少し解説願えますでしょうか?



>特に制約がないなら、分散オブジェクトを利用するかな。
>HORB , dRuby などなど
HORBは調べてみました、javaでネットワークを越えて利用できるようですね
これですと
1.Linux側で作成したjavaプログラムがWindowsのjavaプログラムを起動
2.WindowsのjavaプログラムがVBで作成したプログラム(exe)を実行し
  結果を戻す
3.2の結果をLinux側のjavaプログラムが判断し適切な処理を行う

このような感じで合っていますでしょうか?

よろしくお願いいたします
イチタカ
会議室デビュー日: 2005/10/10
投稿数: 7
投稿日時: 2005-10-11 21:55
Natsume様
横やりすみません。

引用
>HORBは調べてみました、javaでネットワークを越えて利用できるようですね
チャットと同じ実装で実現できないでしょうか?
WindowsサーバとLinuxサーバの間にファイアウォールが噛んでいるならポートを空けてもらうようにしないといけませんが。

もし、Windows側との通信を非同期で行うということでしたら、Windows通信用のプログラムを単体で用意して、実行引数にパラメータを用意して、
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Runtime.html
execメソッドでクライアントとなる通信用プログラムを実行して、Windowsサーバと通信処理を行い、結果を受け取って返す。というように。

同期実行する場合は現行のプログラムにソケット通信のプログラムを組み込んで、Windowsに組み込んだサーバプログラムからの応答を待っていればいいと思うのですが。

まとめますと。
方法1
Linux メインのソフト Windowsサーバ通信用クライアントソフト(共に自家製)
Windows Windowsサーバ通信用サーバソフト(自家製)

動作
1.メインのソフトがRuntime.exec("hogehoge para1 para2 para3...")を実行
2−1.メインのソフトは結果を待たず処理を続行
2−2.クライアントソフトがWindowsサーバへ接続要求
2−3.Windowsサーバコネクション
2−4.クライアントソフトがパラメータ送信
2−5.Windowsサーバ側が処理(他のアプリを起動する場合、Javaなら同じくRuntime.execで)
2−6.処理結果をクライアントへ返す
2−7.クライアントが処理結果から処理実行
3.通信終了

というような感じだと思います。

方法2
基本は方法1と同じです。
通信処理をそのままメインに組み込むと通常は同期処理になる(スレッドを使ったり、あえて非同期処理に持っていかなければ)ので、TCP/IP通信処理です。

こういうのはどうでしょう?
おっきー
大ベテラン
会議室デビュー日: 2003/05/01
投稿数: 104
投稿日時: 2005-10-11 22:00
イチタカさんが詳しいフォローを下さってますので蛇足になっちゃいますが、

引用:

Natsumeさんの書き込み (2005-10-11 18:56) より:
>Windows側にWebサーバを立てて
>Linux 側からリクエストを送るってのはどうでしょう?

できればWebの画面を利用しないでリクエストを送りたいのですが
どのような言語でどうすればいいのか見当がつきません...
まったくの素人で申し訳ございませんがもう少し解説願えますでしょうか?



えっと、いろいろな方法がありますのでおおざっぱにしか説明できませんが。
要は、HTTPのプロトコルを操作できる言語を使えばいいと思います。
大抵の言語はネットワークに対応しているのではないでしょうか。
Linux 側ではどんな言語を使う予定ですか?

HTTP通信部分のプログラムを作成せずとも curl , wget などのコマンドを
利用する手もあります。

引用:

>特に制約がないなら、分散オブジェクトを利用するかな。
>HORB , dRuby などなど
HORBは調べてみました、javaでネットワークを越えて利用できるようですね
これですと
1.Linux側で作成したjavaプログラムがWindowsのjavaプログラムを起動
2.WindowsのjavaプログラムがVBで作成したプログラム(exe)を実行し
  結果を戻す
3.2の結果をLinux側のjavaプログラムが判断し適切な処理を行う

このような感じで合っていますでしょうか?

よろしくお願いいたします



そうです。


[ メッセージ編集済み 編集者: おっきー 編集日時 2005-10-11 22:08 ]

スキルアップ/キャリアアップ(JOB@IT)