WindowsからSSHポートフォワードを複数ホストに設定(2)
2006.11.04
前回の続きです。
今回は、前回簡単に説明した、処理をVBScriptを使って、ちょっとだけ自動化しているサンプルです。
Dim objShell, strPath, strKey, aryLP(4), aryIP(4), i, RCode, _ strCommand, strMsg, strUser ' =============定数・変数設定=============== strPath = "C:pfs" 'pageant.exe, plink.exe のパス strKey = "identity.ppk" 'ssh Keyファイル名。pageant,plinkと同じディレクトリに保存 strUser = "sshuser" 'SSH接続ユーザー名 'ローカルポート設定 aryLP(0) = "10081" 'Host1へのローカルポート aryLP(1) = "10082" 'Host2へのローカルポート aryLP(2) = "10083" 'Host3へのローカルポート aryLP(3) = "10084" 'Host4へのローカルポート aryLP(4) = "10085" 'Host5へのローカルポート '接続先ホストIPアドレス aryIP(0) = "192.168.0.1" 'Host1 aryIP(1) = "192.168.0.2" 'Host2 aryIP(2) = "192.168.0.3" 'Host3 aryIP(3) = "192.168.0.4" 'Host4 aryIP(4) = "192.168.0.5" 'Host5 ' =============pageant起動=============== Set objShell = CreateObject("Wscript.Shell") RCode = -1 'pageant 起動フラグ初期化 If RCode <> 0 then strCommand = strPath & "pageant.exe " _ & strPath & strKey RCode = objShell.Run(strCommand, 0, False) End if Wscript.Sleep 10000 strMsg = "パスワード入力は済みましたか?" If MsgBox(strMsg,4) = 6 then ' =============plink起動=============== ' "はい"の場合のみ起動 For i = LBound(aryLP) to UBound(aryLP) strCommand = "cmd /c start /min " & strPath & _ "plink.exe -ssh -1 -l " & strUser & " -L " & _ aryLP(i) & ":localhost:80 " & aryIP(i) objShell.Run strCommand, 0, False Next End if簡単に説明すると、 1.pageant.exeを起動 2.10秒後、pageant.exeの準備が出来たかどうか確認メッセージ表示 (pageant.exeが正常な待機状態か否かはスクリプトから判断できなかった為) 3.plink.exeを複数起動し、フォワード設定を行う という感じです。 上記サンプルは、 ・接続ホストは5台を想定 ・フォワード先は80番ポート などあるので、実際の利用にはSSHのユーザ名やフォワード先、ホストIPアドレス、ローカルポートなどなど、必要な個所を色々と書き換える必要はあると思います。 ご注意下さい。 また、当方WindowsXP Professinal SP2環境でしか動作検証していないので、それ以外の環境下での動作は不明です。 参考になったでしょうか。
カテゴリー:技術情報メモ