ようこそ!
答えてねっと for Businessは、
マイクロソフトが運営する
ビジネスで使うパソコンや
ITに関するQ&Aサイトです。

質問

rshの仕様?execメソッドの仕様?

製品名:デスクトップ OS、サーバー OS/Windows Server 2003

現象:できない/その他

懸賞ポイントが設定されています。 300

この質問は未解決で締め切られています

こんにちは

Windowsサーバ(VBScript)からUnixサーバに対して以下の処理をしていますが、
2分ぴったりでUnix側シェルが終わる前にエラーが帰って来てしまいます。

<VBScript抜粋>

Set wShell = CreateObject("WScript.Shell")
Set objRSH = wShell.Exec("c:\windows\system32\rsh.exe <Unixホスト> -l <実行ユーザ> <実行シェル>"

Do While objRSH.Status = 0
WScript.Sleep 100
Loop

Unixシェルが2分以内で終われば当然正常に終了しますが、
2分以上かかるものはすべてエラーになってしまいます。

以下はテストしたパターンです。

<Runメソッド使用>
Set wShell = CreateObject("WScript.Shell")
ErrorCode = wShell.Run("c:\windows\system32\rsh.exe <Unixホスト> -l <実行ユーザ> <実行シェル>"
・2分でエラーになることはないですが、Unixシェルの標準出力が取得できないので使用不可

<ローカルで実行>
Set wShell = CreateObject("WScript.Shell")
Set objRSH = wShell.Exec("c:\hogehoge\Sleep.bat"

Do While objRSH.Status = 0
WScript.Sleep 100
Loop
・2分を超えても正常に返ってくる

この結果からいったい何のタイムアウトなのかが全くわからなくなりました。
何かご存知でしたらご教示願います。

回答1 (この回答は質問に対する回答です)

  • 投稿ID:A2008054345
  • 投稿日時:2008/10/09 12:44

回答ではありませんが、参考までにこちらで試験してみた結果を書いておきます。

Win2K3R2Sp2+SFU3.5(リモートシェルサーバ実行環境)の実行環境で以下のスクリプト(自分自身にRSHでSleep 125)を実行してみましたが、問題なく完了します。

Set wShell = CreateObject("WScript.Shell")
Set objRSH = wShell.Exec("c:\windows\system32\rsh.exe WinSV sleep 125")

Do While objRSH.Status = 0
WScript.Sleep 100
Loop

msgbox "OK"

RSHの先をWin2KSP4+SFU3.5にも向けてみましたがやはり正常に終了します。
UNIXマシンがないのでUNIXへのRSHはテストできません。

ところでエラーメッセージは何なのでしょうか?
# 直にRSHしないでバッチファイル経由にしてみるとか。。。

  •  

回答2 (この回答は回答1に対する回答です)

  • 投稿ID:A2008054351
  • 投稿日時:2008/10/09 14:16

ミツ**さん

返信ありがとうございます。
いったいどこに起因しているんでしょうね。。。
調べれば調べるほど分らなくなってきました・・・。

> ところでエラーメッセージは何なのでしょうか?
おそらくRSHのリターンコードでしょうが、「1」とだけ返ってきます。

  •  

回答3 (この回答は質問に対する回答です)

  • 投稿ID:A2008054456
  • 投稿日時:2008/10/11 12:33

チャブーンです。

参考情報のレベルですが、実行シェルの内容によっては、したの資料があてはまるかもしれません。

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/94f6fbc0-f984-40e2-9e63-5c638d4fab8d/マイクロソフト以外のサイトへ移動する

もしうえがあてはまるなら解決方法はたぶん、修正プログラムをあてることです。ただし SP2 には反映済みですが。

http://support.microsoft.com/kb/896336/en-us

  •