仮想化技術 ESXサーバへのSSHログイン手順と仮想マシンの停止

今日は、仮想化です。
仮想化って何?っていう人も居るかもしれません。
簡単にいえば、サーバの中に、「架空の」パソコンを入れてしまう技術です。
実体は無いんだけど、その架空パソコンの中で、Windowsとかが動くのです。
実体は、無いとはいえ、動くし、画面もネットワーク経由で見れる、というものです。
使い道は、いろいろあるんですが、まぁパソコン全体が一つのファイルになってしまっているので、
例えば、そのファイルをコピーすれば、パソコンのコピーができるわけです。
(実際にはそう簡単にいかないのですが)

その仮想化をやるために、じつは、ESXサーバというものを用意する必要があるのです。
そのESXサーバに対して、色々と作業をする際に、コンソール端末というものを使います(使わない方法も
ありますが)。

今回は、SSHでのTeraTermの接続手順です。

まず、ESXサーバのIPアドレスを指定し、SSHを選択します。
WS000065.jpg

すると、次のダイアログが出るので、「チャレンジレスポンス認証」を選びます。
ユーザIDは入力しておきます。
WS000066.jpg

OKを押すと、
WS000067.jpg
このようなダイアログが出るので、パスワードを入力します。

すると、
WS000068.jpg
このようにログインができます。

さて、ついでに、ゲストOSを、ESX管理コンソールから停止させてみましょう。

コマンドラインとしては、下記のように実施します。

vim-cmd vmsvc/getallvms
これで、仮想マシンのIDを調べます。
WS000069.jpg

上記例の上の方で、マシンIDをみていますが、1と2ですね。
今回は、Windowsの2を落としてみます。
vim-cmd vmsvc/power.shutdown 2
これで、ゲストOSの停止がスタートします。
(いきなり電源断ではなく、ちゃんと停止処理が動いてます)

停止が完了しました。
今度は、起動してみましょう。
WS000070.jpg

vim-cmd vmsvc/power.on 2
これで起動がスタートします。

まぁ仮想環境でWindows環境を起動しても、画面を見ない限りはちゃんと起動したかどうか判らないですし、
DHCPクライアントだったりすると、まずIPアドレスを調べないと(名前でログオンできればいいですが)いけない、ということで、
私は、仮想環境のWindowsに、自分のIPアドレスをメールしてくれるバッチファイルとvbsを置いています。

reportmail.bat


cscript sleep.vbs 30000
ipconfig /all > log.txt
cscript reportmail.vbs log.txt
cscript sleep.vbs 10000


これはタスクから呼び出されるbatファイルで、全体の流れを記述している。同じフォルダに下の2つのvbsと共に配置しておく。ちなみにsleep.vbsを使って、PC起動後30秒ほど待っているが、こうしないと ipconfig実行時にまだIPアドレスをDHCPサーバから貰っていなかったりする。


sleep.vbs


WScript.Echo "SLEEP START " & Now()
if WScript.Arguments.Count > 0 Then
WScript.Sleep WScript.Arguments.Item(0)
Else
WScript.Sleep 10000
End If
WScript.Echo "SLEEP END " & Now()


これは非常に簡単で、単純に「WScript.Sleep 10000」でもいいんだが、いちおう引数で待ち時間を指定できるようにしてあります(ミリ秒単位なので注意)。

reportmail.vbs


'定数の宣言
Const ForReading = 1 '読み込み
Const ForWriting = 2 '書きこみ(上書きモード)
Const ForAppending = 8 '書きこみ(追記モード)
Dim strFilePath
Dim strScriptPath
Dim objParm

'パラメタ情報の保存
Set objParm = Wscript.Arguments

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")
Set objNetwork = CreateObject("Wscript.Network")
strUser = objNetwork.UserName
strComputer = objNetwork.ComputerName


Set oMsg = CreateObject("CDO.Message")
oMsg.From = strUser & " "
oMsg.Subject = "Wakeup & IP Report " & strComputer & " "

Set objFileSys = CreateObject("Scripting.FileSystemObject")
'引数1 ファイル名
strFileName = objParm(0)
'このスクリプトのフォルダを取得
strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
'ファイル名をセット
strFilePath = objFileSys.BuildPath(strScriptPath,strFileName)
'ファイルのオープン
Set objInFile = objFileSys.OpenTextFile(strFilePath,ForReading)
'ファイルのオープンが成功(ファイル有り)のときはErr.Numberが0
oMsg.TextBody = ""
If Err.Number=0 Then
'ファイルの全ての内容をガバっと取り出し
oMsg.TextBody = objInFile.ReadAll
'ファイルのクローズ
objInFile.Close
else
oMsg.TextBody = "ログファイルが見つかりません(" & strFilePath & ")"
end if
objShell.LogEvent 4, oMsg.TextBody
oMsg.TextBody = oMsg.TextBody & vbCrLf
oMsg.TextBody = oMsg.TextBody & "time : " & Now() & vbCrLf
oMsg.TextBody = oMsg.TextBody & "ComputerName : " & strComputer & vbCrLf
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server.address.jp"
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "sendusername@hoge.com"
oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"



oMsg.Configuration.Fields.Update

oMsg.To = "atesaki@hoge.gr.jp,atesaki2@hoge.gr.du"
retrycount=0
retrymax=10
do while senddone=0
on error resume next
ret=oMsg.Send
Select Case Err.Number
Case 0 'wscript.echo "メールを送信しました"
senddone=1
exit do
Case else 'Wscript.echo "エラーが発生しました。" & vbCrLf & "ERROR Detail "& Err.Number & ":" & Err.Description
if retrycount < retrymax then
retrycount=retrycount+1
'WScript.Echo "リトライします。"
WScript.Sleep 30000
else
'WScript.Echo "エラー、リトライ回数を超えました"
exit do
end if
End Select
Err.Clear
on error goto 0
loop


これは、メールを実際に送信するvbsです。巷でよく紹介されている、CDO.Message を使うパターンです。
ただ、SMTP認証に対応しています。
あと、送信失敗時、エラー処理として何回かリトライします。
ソースをみてみると、30秒インターバルを置いて、11回送信をチャレンジしてますね。
330秒だから、5分すこしは送信しようとする・・・
ま、LANの調子が多少悪いくらいなら頑張って送信してくれる?かもしれません。
スポンサーサイト

この記事のトラックバックURL

http://alphaiota.blog105.fc2.com/tb.php/468-1c8748d0

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99