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環境でしか動作検証していないので、それ以外の環境下での動作は不明です。
参考になったでしょうか。カテゴリー:技術情報メモ
