--- trunk/usbip/usbipdevd2 2011/09/19 15:56:48 1529 +++ trunk/usbip/usbipdevd2 2011/09/19 17:55:43 1537 @@ -6,28 +6,41 @@ # some sane defaults [[ -z ${USBIP_POLLING_TIME} ]] && USBIP_POLLING_TIME="10" -[[ -z ${USBIP_TEMP} ]] && USBIP_TEMP="/var/lib/usbipdevd" -install -d ${USBIP_TEMP} + +# version 0.1.7, no parseable list cmd +if [[ -x /usr/bin/bind_driver ]] +then + BINDCMD="/usr/bin/bind_driver " +else + BINDCMD="/usr/sbin/usbip_bind_driver" +fi while true do - BUSID=$(bind_driver --list | grep -i "${USBIP_DEVICE_ID}" | sed 's|.*busid\ \([0-9].*\)\ (${USBIP_DEVICE_ID}).*|\1|') + # version 0.1.7, no parseable list cmd + if [[ ${BINDCMD} = /usr/bin/bind_driver ]] + then + BUSID=$(${BINDCMD} --list | grep -i "${USBIP_DEVICE_ID}" | sed 's:.*busid\ \([0-9].*\)\ (.*:\1:') # sanitizing syntax-highlighting ) + BUSBINDING=$(${BINDCMD} --list | grep -A1 "${USBIP_DEVICE_ID}" | grep -- '->' | sed 's:.*->\ \(.*\):\1:') + else + BUSID=$(${BINDCMD} --list | grep "${USBIP_DEVICE_ID}" | cut -d'#' -f1 | sed 's:.*=\(.*\):\1:') + BUSBINDING=$(${BINDCMD} --list | grep "${USBIP_DEVICE_ID}" | cut -d'#' -f3 | sed 's:.*=\(.*\):\1:') + fi if [[ -n ${BUSID} ]] then # abort here if the busid is the same, because the client connection is lost on new exports - if [[ -f ${USBIP_TEMP}/${USBIP_DEVICE_ID//:/_} ]] && - [[ ${BUSID} = $(< ${USBIP_TEMP}/${USBIP_DEVICE_ID//:/_}) ]] - then - echo "USBID is the same; nothing changed" - else - echo "Exporting USB Device with ID ${BUSID}" - bind_driver --usbip ${BUSID} - echo "${BUSID}" > ${USBIP_TEMP}/${USBIP_DEVICE_ID//:/_} - fi + case ${BUSBINDING} in + usbip) echo "USBID is the same; nothing changed" ;; + none) + echo "Exporting USB Device with ID ${BUSID}" + ${BINDCMD} --usbip ${BUSID} + ;; + *) echo "Warning: unkown BUSBINDING '${BUSBINDING}' of BUSID '${BUSID}'" ;; + esac else echo "USB Device '${USBIP_DEVICE_ID}' not found ..." fi - sleep ${USBIP_WAIT_TIMEOUT} + sleep ${USBIP_POLLING_TIME} done