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