1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/usr/bin/python
- import os
- import sys
- import time
- import subprocess
- import random
- bindir='/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 userin
- def statustext(result):
- if result == 0:
- status = 'OK'
- else:
- status = 'Failed'
- return status
- def 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())
|