Skip to content

Instantly share code, notes, and snippets.

@mikesmullin
Created May 12, 2013 22:48
Show Gist options
  • Save mikesmullin/5565246 to your computer and use it in GitHub Desktop.
Save mikesmullin/5565246 to your computer and use it in GitHub Desktop.
VirtualBox VBoxManage CLI helper
#!/usr/bin/env ruby
# vim: set ft=ruby :
verb = ARGV[0]
who = ARGV[1..-1]
workers = %w{Zero Nasir Harsh Nino Victor Andy Abbas Atef}
group = who.first.downcase == 'all'? workers : who
group.each do |worker|
next if %w{Zero}.include? worker # skip
worker_no = workers.index worker
puts "#{worker} is worker no. #{worker_no}. will #{verb}..."
vm_name = case worker.downcase
when 'nasir'
"Worker 1 Nasir Hussain"
else
"Worker #{worker_no}"
end
case verb.downcase.to_sym
when :start
# TODO: loop in here? interactive console?
cmd = "vboxheadless --startvm '#{vm_name}' --vnc --vncport 666#{worker_no} --vncpass #{workers[worker_no]}"
when :stop
cmd = "vboxmanage controlvm '#{vm_name}' savestate"
when :resize
resolution = case worker
when 'Abbas'
'1904 1000'
when 'Victor'
'1600 900'
when 'Andy'
'1200 980' # Andy
else
'1343 690'
end
cmd = "vboxmanage controlvm '#{vm_name}' setvideomodehint #{resolution} 24"
when :join
cmd = "echo #{worker} | vncviewer -autopass localhost:666#{worker_no}"
when :restart
# coming soon; force abort? or soft reboot?
when :screenshot
cmd = "vboxmanage controlvm '#{vm_name}' screenshotpng #{Time.now.strftime('%Y%m%d')}-#{worker.downcase}-#{Time.now.strftime('%H%M%S')}.png"
end
if cmd
puts cmd
system cmd
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment