仕事上で発生した不具合の対応メモ。
------------------------------------------------------------------------
ウチの開発するシステムで、Windows→UNIXのシェルを実行するというものがあるのですが、
Windows7で動作しないとの問合せがあり、調査した際のメモです。
Windows→UNIXのシェルを実行する際に、RSHコマンドを使用していたのですが、
WindowsXPには標準搭載されているものの、Windows7では(正確にはVista以降では)
標準搭載されておらず、SUA(Subsystem for Unix Application)の導入が必要です。
※SUAに関する詳細は下記ページ参照。
UNIX ベース アプリケーション用サブシステムの概要
で、これをインストールして、RSHコマンドを実行してみると、しばらくレスポンスが返ってこない・・・
挙句の果てに、”select: protocol failure in circuit setup”なんていうエラーが返ってきた。。
ネットを色々調べてみたけど、なかなか見つからなかったので、メモ書きをしておこうと思いました。
結論から書くと、ファイアウォールの例外設定を追加することが必要で、
ここからがなかなか解決できなかったのですが、ポートではなく、プログラムを指定する必要がありました。
例外設定するプログラムがコチラ:
%SystemRoot%\System32\psxss.exe
XPのRSHコマンドは、ポート固定だったと記憶しているのですが、
ネット上で検索して見つかったポート:1022を指定するだけではダメで、
SUAに搭載されているRSHコマンドは、使用するポートが動的に変化するために
このプログラムを例外として追加する必要があったのです。。
※ネットワークキャプチャすると確かに101x~102xを、コマンド発行毎に動的に使用していました。
いや~長かった。。レアな使い方なのか、なかなか情報ないし、
それらしき質問の投稿が見つかっても解決に至ってないスレッドばっかなんだもん。。
※例外設定の手順詳細は、下記の通り。
1. スタート→コントロールパネルを選択。
2. “Windows ファイアウォール"を選択。
3. スコープペインのツリーから"受信の規則"を選択。
4. "新しい規則"を選択。
5. 「規則の種類」にてラジオボタン"プログラム"を選択し、[次へ]ボタンを選択。
6. 「プログラム」にてパスに"%SystemRoot%\system32\psxss.exe"と入力し、
[次へ]ボタンを選択。
7. 「操作」にてラジオボタン"接続を許可する"を選択し、[次へ]ボタンを選択。
8. 「プロファイル」にて通信を行うネットワークに対しチェックを入れ、[次へ]ボタンを選択。
9. 「名前」にて"RSH"(任意)と入力し、[完了]ボタンを選択。
------------------------------------------------------------------------
ウチの開発するシステムで、Windows→UNIXのシェルを実行するというものがあるのですが、
Windows7で動作しないとの問合せがあり、調査した際のメモです。
Windows→UNIXのシェルを実行する際に、RSHコマンドを使用していたのですが、
WindowsXPには標準搭載されているものの、Windows7では(正確にはVista以降では)
標準搭載されておらず、SUA(Subsystem for Unix Application)の導入が必要です。
※SUAに関する詳細は下記ページ参照。
UNIX ベース アプリケーション用サブシステムの概要
で、これをインストールして、RSHコマンドを実行してみると、しばらくレスポンスが返ってこない・・・
挙句の果てに、”select: protocol failure in circuit setup”なんていうエラーが返ってきた。。
ネットを色々調べてみたけど、なかなか見つからなかったので、メモ書きをしておこうと思いました。
結論から書くと、ファイアウォールの例外設定を追加することが必要で、
ここからがなかなか解決できなかったのですが、ポートではなく、プログラムを指定する必要がありました。
例外設定するプログラムがコチラ:
%SystemRoot%\System32\psxss.exe
XPのRSHコマンドは、ポート固定だったと記憶しているのですが、
ネット上で検索して見つかったポート:1022を指定するだけではダメで、
SUAに搭載されているRSHコマンドは、使用するポートが動的に変化するために
このプログラムを例外として追加する必要があったのです。。
※ネットワークキャプチャすると確かに101x~102xを、コマンド発行毎に動的に使用していました。
いや~長かった。。レアな使い方なのか、なかなか情報ないし、
それらしき質問の投稿が見つかっても解決に至ってないスレッドばっかなんだもん。。
※例外設定の手順詳細は、下記の通り。
1. スタート→コントロールパネルを選択。
2. “Windows ファイアウォール"を選択。
3. スコープペインのツリーから"受信の規則"を選択。
4. "新しい規則"を選択。
5. 「規則の種類」にてラジオボタン"プログラム"を選択し、[次へ]ボタンを選択。
6. 「プログラム」にてパスに"%SystemRoot%\system32\psxss.exe"と入力し、
[次へ]ボタンを選択。
7. 「操作」にてラジオボタン"接続を許可する"を選択し、[次へ]ボタンを選択。
8. 「プロファイル」にて通信を行うネットワークに対しチェックを入れ、[次へ]ボタンを選択。
9. 「名前」にて"RSH"(任意)と入力し、[完了]ボタンを選択。
今回は初めからつまずいておりました。RSHはSUAで大丈夫だろうと見積もっていたところ、SUAがマイクロソフトの分類ではx86用/AMD64用/IA64用と3種類ある中でインテルXeonCPUのマシン(Windows2008 R2 64bit)にセットアップする際に
・x86用で64bitOSでも動くだろう→ダメ
・まさかIA64用?→ダメ
・AMD64版はこのマシンはAMDではないから対象外として試さず
とやってしまいそこからあがいてハマりました※実際にはこの場合のAMD64は今のx64と同意で2008にはこちらを使用するべきでした。
メモ書き大変助かりました。ありがとうございました。
いや~長かったです;
今日はこれをきっかけにiPodで眠っていたX JAPANを聴くようにします(笑)
参考にして頂けて幸いです。
記事投稿時期より最近の方がよく見られていることが多いみたいで最近ニーズが高まってきたのかなと感じています。
64bitマシンではSUAの選択が大事なようですね!追加情報ありがとうございます。
これを機会にX JAPANを聞いて頂けるとのこと笑、ありがとうございます(^o^)