スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

仮想化技術 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

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。