7d07a6cf50
Those files are actually common for dom0 and VM, but as we splitted the repos, move them accordingly.
50 lines
1.3 KiB
Python
Executable File
50 lines
1.3 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
##
|
|
## This script is for dom0
|
|
## The syntax is modelled after "xl block-attach"
|
|
## FIXME: should be modelled after block-detach instead
|
|
##
|
|
|
|
import sys
|
|
import os
|
|
import xen.lowlevel.xl
|
|
|
|
# parse command line
|
|
if (len(sys.argv)<4) or (len(sys.argv)>5):
|
|
print 'usage: xl-qvm-usb-detach.py <frontendvm-xid> <backendvm-device> <frontendvm-device> [<backendvm-xid>]'
|
|
sys.exit(1)
|
|
|
|
frontendvm_xid=sys.argv[1]
|
|
backendvm_device=sys.argv[2]
|
|
|
|
frontend=sys.argv[3].split('-')
|
|
if len(frontend)!=2:
|
|
print 'Error: frontendvm-device must be in <controller>-<port> format'
|
|
sys.exit(1)
|
|
(controller, port)=frontend
|
|
|
|
if len(sys.argv)>4:
|
|
backendvm_xid=int(sys.argv[4])
|
|
backendvm_name=xen.lowlevel.xl.ctx().domid_to_name(backendvm_xid)
|
|
else:
|
|
backendvm_xid=0
|
|
|
|
cmd = "/usr/lib/qubes/vusb-ctl.py unbind '%s'" % backendvm_device
|
|
if backendvm_xid == 0:
|
|
os.system("sudo %s" % cmd)
|
|
else:
|
|
from qubes.qubes import QubesVmCollection
|
|
qvm_collection = QubesVmCollection()
|
|
qvm_collection.lock_db_for_reading()
|
|
qvm_collection.load()
|
|
qvm_collection.unlock_db()
|
|
|
|
# launch
|
|
qvm_collection.get_vm_by_name(backendvm_name).run(cmd, user="root")
|
|
|
|
# FIXME: command injection
|
|
os.system("xenstore-write /local/domain/%s/backend/vusb/%s/%s/port/%s ''"
|
|
% (backendvm_xid, frontendvm_xid, controller, port))
|
|
|