| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | #!/usr/bin/pythonimport osimport sysimport timeimport subprocessimport randombindir='/usr/bin'sys.path.append(bindir)def input_sel(prompt,max_,selectionoption):    # let the user choose the VM and verify selection    while True:        try:            print ('Please select from the list of running VMs\n\n'+'\n'.join(selectionoption))            userin = int(raw_input(prompt))        except ValueError:            print('\nThat was not a number\n\n')            continue        if userin > max_:            print('\nInput must be less than or equal to {0}.\n\n'.format(max_))        elif userin < 1:            print('\nInput must be greater than or equal to 1\n\n')        else:            return userindef statustext(result):    if result == 0:        status = 'OK'    else:        status = 'Failed'    return statusdef controlvmnetworkstate():    try:        offtime = 600        ontime = 14        vmdict={}        vmlist=[]        executable = os.path.join(bindir, 'VBoxManage')        #retrieve a list of all running VMs        runningvms= subprocess.check_output('%s list runningvms' %executable,shell=True).splitlines()        if len(runningvms) != 0:            for n in range(0, len(runningvms)):                vmlist.append('%s: %s' %(n+1,runningvms[n].rsplit(' ',1)[0].strip('"')))                vmdict[n+1]=runningvms[n].rsplit(' ',1)[-1]            usersel=input_sel('\nEnter the number of the VM: ',len(runningvms),vmlist)        else:            print('Can not retrieve list of running VMs')            sys.exit()        vmuuid=vmdict[usersel]        while True:            offtime = random.randint(60, 90)            ontime = random.randint(10, 90)            timenow = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())            on = subprocess.call('%s controlvm %s setlinkstate1 on' %(executable,vmuuid),                                 shell=True)            status=statustext(on)            print ('%s: Plug Network cable into VM %s for %ds: %s' % (timenow, runningvms[usersel-1].rsplit(' ',1)[0].strip('"'),ontime, str(status)))            time.sleep(ontime)            timenow = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())            off = subprocess.call('%s controlvm %s setlinkstate1 off' %(executable,vmuuid),                                  shell=True)            status = statustext(off)            print ('%s: Unplug Network cable from VM %s for %ds: %s' % (timenow, runningvms[usersel-1].rsplit(' ',1)[0].strip('"'),offtime, str(status)))            time.sleep(offtime)    except KeyboardInterrupt:        sys.exit('\nUser Interrupt')    except Exception as e:        print("Error in %s in function %s: %s" % (__name__, sys._getframe().f_code.co_name, e.message))if __name__ == "__main__":    sys.exit(controlvmnetworkstate())
 |