ESXi をリモートからいじるメモ
ESXi 上のゲストOSをいじるのに、いちいち重たいGUIを開くのは面倒てことで、ssh 経由でリモートから色々やろうと思って色々調べてたのだけど、ESXi の CLI にゲストOSの電源オン・オフの状態一覧を表示するコマンドがないっぽかったので、ruby でスクリプトを書いてみた↓
# -*- coding: utf-8 -*- require 'rubygems' require 'net/ssh' HOST = '192.168.0.2' USER = 'root' PASSWORD = 'hogehoge' def get_state_allvms Net::SSH.start(HOST, USER, :password => PASSWORD) do |ssh| output = ssh.exec!("vim-cmd vmsvc/getallvms") puts "Power #{output.first}" output.drop(1).each do |line| id = line.split.first state = ssh.exec!("vim-cmd vmsvc/power.getstate #{id}") puts (state =~ /Powered on/) ? "on #{line}" : "off #{line}" end end end get_state_allvms
実行するとこんな感じに↓
Power Vmid Name File Guest OS Version Annotation on 16 Windows XP SP3 [x3105] Windows XP SP3/Windows XP SP3.vmx winXPProGuest vmx-07 on 32 ubuntu [x3105] ubuntu/ubuntu.vmx ubuntu64Guest vmx-07 off 48 sc430 [data] sc430/sc430.vmx winXPProGuest vmx-07
で、、、ゲストOS全部シャットダウンしてから、ESXi マシンの電源切るにはどうしたらよかろう?と調べていたら、そもそも shutdown.sh というスクリプトが /sbin にあって
~ # shutdown.sh ~ # poweroff