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を実行する」仕掛けを組んでみた。
- 32ビットのcmd.exeから、イベントログにイベントを書く。こんな風に… EVENTCREATE /L APPLICATION /SO ソース名 /ID イベントID /T INFORMATION /D "説明"
- このイベントをきっかけに起動するタスクを作る。「アプリケーション」イベントログで「ソース名」と「イベントID」がマッチしたら、Windowsバッチファイルを実行させる。
- バッチファイルの中では… C:\Windows\SUA\bin\rsh -l ユーザー名 ホスト名 コマンド
これでrshが起動するところまでは大丈夫。
参考:EVENTCREATEユーティリティ。(Microsoftサポート)
けれどもrshがエラーメッセージ「select: protocol failure in circuit setup」を吐いて終了してしまう。rshが受信接続する動的ポートをWindowsファイアウォールで開いておかないといけないらしい。これは受信の規則でプログラム「%SystemRoot%\system32\psxss.exe」を許可すればOK。(こちらのブログ記事が大変参考になりました。ありがとうございます。)