def startVM(vmname): from vboxapi import VirtualBoxManager mgr = VirtualBoxManager(None, None) vbox = mgr.getVirtualBox() name = vmname mach = vbox.findMachine(name) session = mgr.getSessionObject(vbox) progress = mach.launchVMProcess(session, "gui", []) progress.waitForCompletion(-1) mgr.closeMachineSession(session)
class VirtualBoxController : machineName = "android_x86" def __init__(self) : self.mgr = VirtualBoxManager(None,None) self.vbox = self.mgr.vbox def createMachine(self,userName) : exMachine = self.vbox.findMachine(self.machineName) result = self.vbox.createMachine("",self.machineName + "_" + userName,None,'Linux',"") #result.setSettingsFilePath(exMachine.settingsFilePath) print "'%s" %(result) def findMachine(self,machineNum) : try : mach = self.vbox.findMachine(self.machineName + "_" + machineNum) #mach = self.vbox.findMachine(self.machineName + "_" + userName) return mach except pywintypes.com_error : nMachine = MachineCreator() nMachine.createNewMachine(int(machineNum)) mach = self.vbox.findMachine(self.machineName + "_" + machineNum) #print "WRONG MACHINE NAME" return mach def checkAllMachines(self) : for machines in self.mgr.getArray(self.vbox,'machines') : print "Machine '%s' " %(machines.name) def getSession(self) : self.session = self.mgr.getSessionObject(self.vbox) def makeProcess(self,mach) : self.process = mach.launchVMProcess(self.session,"gui","") self.process.waitForCompletion(-1) def closeSession(self) : self.mgr.closeMachineSession(self.session) def connectVmSocket(self,vmIp,vmPort) : mVmSocket = VmSocket(vmIp,vmPort) mVmSocket.bindSocket() mVmSocket.aceeptVm() vmReturn = mVmSocket.waitVm() print "VmReturn " + vmReturn if "Vm_Boot_Complete" in vmReturn : return True else : return False
def main(argv): usage = "usage: %prog --vm winXP -a 1 -p TCP -l 8080 -g 80 -P www" parser = OptionParser(usage=usage) parser.add_option( "-V", "--vm", action="store", dest="vmname", type="string", help="Name or UID of VM to operate on", default=None ) parser.add_option("-P", "--profile", dest="profile", type="string", default=None) parser.add_option("-p", "--ip-proto", dest="proto", type="string", default=None) parser.add_option("-l", "--host-port", dest="host_port", type="int", default=-1) parser.add_option("-g", "--guest-port", dest="guest_port", type="int", default=-1) parser.add_option("-a", "--adapter", dest="adapter", type="int", default=-1) (options, args) = parser.parse_args(argv) if not (parser.check_required("-V") or parser.check_required("-G")): parser.error("please define --vm or --guid option") if not parser.check_required("-p"): parser.error("please define -p or --ip-proto option") if not parser.check_required("-l"): parser.error("please define -l or --host_port option") if not parser.check_required("-g"): parser.error("please define -g or --guest_port option") if not parser.check_required("-a"): parser.error("please define -a or --adapter option") man = VirtualBoxManager(None, None) vb = man.getVirtualBox() print "VirtualBox version: %s" % vb.version, print "r%s" % vb.revision vm = None try: if options.vmname != None: vm = vb.findMachine(options.vmname) elif options.vmname != None: vm = vb.getMachine(options.vmname) except: print "can't find VM by name or UID:", options.vmname del man return print "vm found: %s [%s]" % (vm.name, vm.id) session = man.openMachineSession(vm.id) vm = session.machine adapter = vm.getNetworkAdapter(options.adapter) if adapter.enabled == False: print "adapter(%d) is disabled" % adapter.slot del man return name = None if adapter.adapterType == man.constants.NetworkAdapterType_Null: print "none adapter type detected" return -1 elif adapter.adapterType == man.constants.NetworkAdapterType_Am79C970A: name = "pcnet" elif adapter.adapterType == man.constants.NetworkAdapterType_Am79C973: name = "pcnet" elif adapter.adapterType == man.constants.NetworkAdapterType_I82540EM: name = "e1000" elif adapter.adapterType == man.constants.NetworkAdapterType_I82545EM: name = "e1000" elif adapter.adapterType == man.constants.NetworkAdapterType_I82543GC: name = "e1000" print "adapter of '%s' type has been detected" % name profile_name = options.profile if profile_name == None: profile_name = generate_profile_name(options.proto.upper(), options.host_port, options.guest_port) config = "VBoxInternal/Devices/" + name + "/" config = config + str(adapter.slot) + "/LUN#0/Config/" + profile_name proto = config + "/Protocol" host_port = config + "/HostPort" guest_port = config + "/GuestPort" vm.setExtraData(proto, options.proto.upper()) vm.setExtraData(host_port, str(options.host_port)) vm.setExtraData(guest_port, str(options.guest_port)) vm.saveSettings() man.closeMachineSession(session) del man
session = manager.mgr.getSessionObject(vbox) machine.lockMachine(session, 1) console = session.console usb_uuid = searchUSBBySerial(serial) console.attachUSBDevice(usb_uuid) manager.closeMachineSession(session) def machineIpAddress(machine): return machine.getGuestProperty('/VirtualBox/GuestInfo/Net/0/V4/IP')[0] if __name__ == '__main__': machine_uuid = str(uuid.uuid4()) flags = 'UUID={0}'.format(machine_uuid) #machine = createMachine(None, machine_uuid, [], 'Debian', flags) machine = createMachine(machine_uuid, uuid=machine_uuid, settings_file=None, groups=[], os_type_id='Debian', flags=flags, force_overwrite=False) fromMachine = searchMachine('987ae866-a4c0-4723-896e-8897fe17f3f0') progress = cloneMachine(fromMachine, machine, 1, []) while progress.operationPercent < 100: fish.animate(amount=progress.operationPercent) vbox.registerMachine(machine) progress, session = launchMachine(machine) while progress.operationPercent < 100: fish.animate(amount=progress.operationPercent) manager.closeMachineSession(session) time.sleep(60) attachUSBBySerial(machine, '8A000080Q') print machineIpAddress(machine)
def main(argv): usage = "usage: %prog --vm winXP -a 1 -p TCP -l 8080 -g 80 -P www" parser = OptionParser(usage=usage) parser.add_option("-V", "--vm", action="store", dest="vmname", type="string", help="Name or UID of VM to operate on", default=None) parser.add_option("-P", "--profile", dest="profile", type="string", default=None) parser.add_option("-p", "--ip-proto", dest="proto", type="string", default=None) parser.add_option("-l", "--host-port", dest="host_port", type="int", default=-1) parser.add_option("-g", "--guest-port", dest="guest_port", type="int", default=-1) parser.add_option("-a", "--adapter", dest="adapter", type="int", default=-1) (options, args) = parser.parse_args(argv) if (not (parser.check_required("-V") or parser.check_required("-G"))): parser.error("please define --vm or --guid option") if (not parser.check_required("-p")): parser.error("please define -p or --ip-proto option") if (not parser.check_required("-l")): parser.error("please define -l or --host_port option") if (not parser.check_required("-g")): parser.error("please define -g or --guest_port option") if (not parser.check_required("-a")): parser.error("please define -a or --adapter option") man = VirtualBoxManager(None, None) vb = man.getVirtualBox() print "VirtualBox version: %s" % vb.version, print "r%s" % vb.revision vm = None try: if options.vmname != None: vm = vb.findMachine(options.vmname) elif options.vmname != None: vm = vb.getMachine(options.vmname) except: print "can't find VM by name or UID:", options.vmname del man return print "vm found: %s [%s]" % (vm.name, vm.id) session = man.openMachineSession(vm.id) vm = session.machine adapter = vm.getNetworkAdapter(options.adapter) if adapter.enabled == False: print "adapter(%d) is disabled" % adapter.slot del man return name = None if (adapter.adapterType == man.constants.NetworkAdapterType_Null): print "none adapter type detected" return -1 elif (adapter.adapterType == man.constants.NetworkAdapterType_Am79C970A): name = "pcnet" elif (adapter.adapterType == man.constants.NetworkAdapterType_Am79C973): name = "pcnet" elif (adapter.adapterType == man.constants.NetworkAdapterType_I82540EM): name = "e1000" elif (adapter.adapterType == man.constants.NetworkAdapterType_I82545EM): name = "e1000" elif (adapter.adapterType == man.constants.NetworkAdapterType_I82543GC): name = "e1000" print "adapter of '%s' type has been detected" % name profile_name = options.profile if profile_name == None: profile_name = generate_profile_name(options.proto.upper(), options.host_port, options.guest_port) config = "VBoxInternal/Devices/" + name + "/" config = config + str(adapter.slot) + "/LUN#0/Config/" + profile_name proto = config + "/Protocol" host_port = config + "/HostPort" guest_port = config + "/GuestPort" vm.setExtraData(proto, options.proto.upper()) vm.setExtraData(host_port, str(options.host_port)) vm.setExtraData(guest_port, str(options.guest_port)) vm.saveSettings() man.closeMachineSession(session) del man
from vboxapi import VirtualBoxManager mgr = VirtualBoxManager(None, None) vbox = mgr.vbox name = "sys_1375885753" mach = vbox.findMachine(name) session = mgr.mgr.getSessionObject(vbox) progress = mach.launchVMProcess(session, "gui", "") progress.waitForCompletion(-1) mgr.closeMachineSession(session) #