Advertisement
Guest User

Untitled

a guest
Dec 10th, 2015
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.02 KB | None | 0 0
  1. '''
  2. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3. !DANGER! POOR CODE QUALITY! USE FOR YOUR OWN RISK!
  4. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  5. HOW TO USE:
  6. 1) Set up QMP via telnet (e.g. -qmp tcp:localhost:4444,server,nowait)
  7. 2) Set target address (usualy localhost) and target port (must be same with you QMP config string)
  8. 3) Assign this script to any hotkey.
  9. ???
  10. PROFIT!
  11. '''
  12.  
  13. target_addr = 'localhost'
  14. target_port = 4444
  15.  
  16. #Set productID in add strings. Get it by converting lsusb IDs to dec.
  17. #16641 50479 - EXAMPLE IDs. DON'T USE!
  18. cmd_add_kbd = b'{ "execute": "device_add", "arguments": { "driver": "usb-host","productid": "16641","id": "kbd" }}\n'
  19. cmd_add_mouse = b'{ "execute": "device_add", "arguments": { "driver": "usb-host","productid": "50479","id": "mouse" }}\n'
  20. cmd_del_kbd = b'{ "execute": "device_del", "arguments": { "id": "kbd" }}\n'
  21. cmd_del_mouse = b'{ "execute": "device_del", "arguments": { "id": "mouse" }}\n'
  22.  
  23. import telnetlib
  24.  
  25. def vm_checker ():
  26.     try:
  27.         telnetlib.Telnet(target_addr,target_port)
  28.     except:
  29.         return 1
  30.     else:
  31.         return 0
  32.    
  33. def vm_push_command (qmp_cmd):
  34.     tn = telnetlib.Telnet(target_addr,target_port)
  35.     print(tn.read_until(b'[]}}'))
  36.     tn.write(b'{ "execute": "qmp_capabilities" }\n')
  37.     print(tn.read_until(b'{}}'))
  38.     tn.write(qmp_cmd)
  39.     ret = tn.read_until(b'}').decode('ascii')
  40.     tn.close()
  41.     return(ret)
  42.    
  43. if __name__ == '__main__':
  44.     print('QMP virtual KVM-switch started.')
  45.     if vm_checker() == 1:
  46.         print('[ERR]: Telnet failed to open ' + target_addr + ' ' + str(target_port))
  47.         print('Check your configuration and VM status.')
  48.     else:
  49.         if vm_push_command(cmd_add_mouse).find('error') != -1:
  50.             print('Mouse allready in VM, will delete it.')
  51.             vm_push_command(cmd_del_mouse)
  52.        
  53.         if vm_push_command(cmd_add_kbd).find('error') != -1:
  54.             print('KBD allready in VM, will delete it.')
  55.             vm_push_command(cmd_del_kbd)
  56.     print('Done.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement