Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 4
0
    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)
Esempio n. 5
0
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
Esempio n. 6
0
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)
#