summaryrefslogtreecommitdiffstats
path: root/core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox
diff options
context:
space:
mode:
authorJonathan Bauer2018-04-13 18:13:25 +0200
committerJonathan Bauer2018-04-13 18:13:25 +0200
commit0ed5e3423df24d5edac94288538033b7763f6dbc (patch)
tree6c2830b01ebccfb9ab1309881732c08a9f8de514 /core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox
parent[run-virt] error msg for missing plugin dir (diff)
downloadmltk-0ed5e3423df24d5edac94288538033b7763f6dbc.tar.gz
mltk-0ed5e3423df24d5edac94288538033b7763f6dbc.tar.xz
mltk-0ed5e3423df24d5edac94288538033b7763f6dbc.zip
[vbox-src] more vbox plugin fixes
* use HW_CORES from /run/hwinfo * add usb attach script [WIP] * udev rule to trigger attach script when usb is connected * edit_attr -> set_attr now always creating missing nodes/attributes ...and prolly more I cant think of now ...
Diffstat (limited to 'core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox')
-rwxr-xr-xcore/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox63
1 files changed, 63 insertions, 0 deletions
diff --git a/core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox b/core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox
new file mode 100755
index 00000000..46452f91
--- /dev/null
+++ b/core/modules/vbox-src/data/opt/openslx/bin/attach-usb-to-vbox
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# OBJECTIVES
+# udev rules to detect usb type etc.
+# figuring out the bus thing.
+
+# check that udev gave us a serial number to work with
+udev_serial="$1"
+if [ -z "$udev_serial" ]; then
+ logger "$0: Did not receive serial from udev"
+ exit 1
+fi
+logger "udev_serial: $udev_serial"
+
+udev_vendorid="$2"
+if [ -z "$udev_vendorid" ]; then
+ logger "$0: Did not receive vendorid from udev"
+ exit 1
+fi
+logger "udev_vendorid: $udev_vendorid"
+
+user=$(ps auxf | grep /usr/lib/virtualbox/VirtualBox | grep -v grep | awk '{print $1}')
+if [ -z "$user" ]; then
+ logger "$0: could not determine user"
+ exit 1
+fi
+
+# find UUID of running VM
+vmuuid=$(su -c "/usr/lib/virtualbox/VBoxManage list runningvms | sed -r 's,^\"[^\{]+\{([a-z0-9\-]+)\}$,\1,g'" "$user")
+if [ -z "$vmuuid" ]; then
+ logger "Failed to find running VirtualBox VM"
+ exit 1
+fi
+logger "vmuuid: $vmuuid"
+
+devname="/dev/vboxusb/$BUSNUM/$DEVNUM"
+for tts in 1 1 2 3 5 5 STOP; do
+ if [ "x$tts" = "xSTOP" ]; then
+ logger "$0: Could not find '$devname' as expected..."
+ exit 1
+ fi
+ [ -e "$devname" ] && break
+ echo "waiting for $devname..."
+ sleep $tts
+done
+
+usblistgrep=$(su -c "/usr/lib/virtualbox/VBoxManage list usbhost" "$user")
+logger "USB list: $usblistgrep"
+
+usbaddress=$(su -c "/usr/lib/virtualbox/VBoxManage list usbhost | grep -A1 -E 'SerialNumber:\s*'"$1" | awk '/Address:/ {print \$2}'" "$user")
+logger "USB address: $usbaddress"
+
+logger "Trying to attach...."
+for tries in 1 2 3 4 5 6 7 8 9 10 STOP; do
+ if [ "$tries" = "STOP" ]; then
+ logger "$0: Failed to attach usb after 5 tries"
+ exit
+ fi
+ if su -c '/usr/lib/virtualbox/VBoxManage controlvm '"$vmuuid"' usbattach '"$usbaddress"'' "$user"; then
+ exit 0
+ fi
+ sleep 1
+done