32ビットcmd.exeからSUAのrshを実行する


Windows Server 2008 R2 の SUA (Subsystem for Unix Application) に附属の rsh を起動するのに、ちょっと嵌まったのでメモ。

rsh のフルパスは C:\Windows\SUA\bin\rsh なんだけど、64ビットのcmd.exeから起動できるのに、32ビットのcmd.exeからでは起動できない。C:\Windows\SysWOW64\cmd.exe を開いて実行してみると…

C:\Windows\SysWOW64>\Windows\SUA\bin\rsh
'\Windows\SUA\bin\rsh' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

そこで、Windowsの標準機能のみで「32ビットアプリからSUAのrshを実行する」仕掛けを組んでみた。

    1. 32ビットのcmd.exeから、イベントログにイベントを書く。こんな風に… EVENTCREATE /L APPLICATION /SO ソース名 /ID イベントID /T INFORMATION /D "説明"
    2. このイベントをきっかけに起動するタスクを作る。「アプリケーション」イベントログで「ソース名」と「イベントID」がマッチしたら、Windowsバッチファイルを実行させる。
    3. バッチファイルの中では… C:\Windows\SUA\bin\rsh -l ユーザー名 ホスト名 コマンド

これでrshが起動するところまでは大丈夫。

参考:EVENTCREATEユーティリティ。(Microsoftサポート)

けれどもrshがエラーメッセージ「select: protocol failure in circuit setup」を吐いて終了してしまう。rshが受信接続する動的ポートをWindowsファイアウォールで開いておかないといけないらしい。これは受信の規則でプログラム「%SystemRoot%\system32\psxss.exe」を許可すればOK。(こちらのブログ記事が大変参考になりました。ありがとうございます。)


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です