设为首页 收藏本站
查看: 1094|回复: 0

[经验分享] 「Linux」VirtualBox免鼠标点击,分配USB设备给虚拟机的办法

[复制链接]

尚未签到

发表于 2015-4-14 08:15:01 | 显示全部楼层 |阅读模式
  虚拟机我喜欢开全屏来操作里边的内容,这样子看起来比较爽快一点。
  但全屏之后,就不能手动来挂载USB设备了,这一点有点不太好……
  好比,最近喜欢上了使用Lenovo K860手机,现在我要通过Linux下的命令来挂载它……
  0. 基础条件:
  -- 虚拟机名称是WinXP3
  1. 查看手机设置的UUID相关信息



scue@Link:~$ vboxmanage list usbhost
UUID:               3bd984a4-3cf3-4a58-94fa-171cb0a1c3be
VendorId:           0x17ef (17EF)
ProductId:          0x7533 (7533)
Revision:           2.38 (0238)
Port:               1
USB version/speed:  2/2
Manufacturer:       Lenovo
Product:            K860
SerialNumber:       0123456789ABCDEF
Address:            sysfs:/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2//device:/dev/vboxusb/002/004
Current State:      Available
  得知 3bd984a4-3cf3-4a58-94fa-171cb0a1c3be 既是我们唯一想要的信息
  2. 现在通过命令来挂载它到名为WinXP3的虚拟机上



scue@Link:~$ vboxmanage controlvm WinXP3 usbattach 3bd984a4-3cf3-4a58-94fa-171cb0a1c3be
  3. 既然能挂载了,也能卸载,卸载的命令



scue@Link:~$ vboxmanage controlvm WinXP3 usbdetach 3bd984a4-3cf3-4a58-94fa-171cb0a1c3be
  4. 为了方便,可以写成两个小脚本,放到~/bin/目录下即可实现随时挂载与卸载,Enjoy!
  脚本1:~/bin/vboxusbattach,分配任意设备给虚拟机(可选择)



#!/bin/bash -
#===============================================================================
#
#          FILE: ~/bin/vboxattach
#
#         USAGE: vboxattach
#
#   DESCRIPTION: 在终端上操作挂载设备到vbox里边(合适用于WinXP3运行于全屏时);
#
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: 这里假定虚拟机名为当前运行的虚拟机(自动识别)
#        AUTHOR: linkscue (scue), linkscue@gmail.com
#       CREATED: 2013年03月11日 14时40分24秒 HKT
#     COPYRIGHT: Copyright (c) 2013, linkscue
#      REVISION: 0.1
#  ORGANIZATION:
#===============================================================================
# 初始化相关的变量
vbox_list=$(vboxmanage list vms | awk -F'"' '{print $2}')
line_cout=$(vboxmanage list usbhost | sed -n 's/Product:            //gp' | wc -l)
select_vm(){
select vbox_name in $vbox_list; do
echo "$vbox_name"
break;
done
}
# 有多个虚拟时,选择虚拟机
if [[ "$(echo $vbox_list | grep " ")" != "" ]]; then
if [[ "$1" != "" ]]; then
vbox_name=$(echo $1 | select_vm)
shift
else
vbox_name=$(select_vm)
fi
echo "Choose the $vbox_name"
else
vbox_name=$vbox_list
fi
# 当设备数量不为空时执行if操作
if [[ $line_cout ]]; then
cout=1
echo "I: the devices attach pc be listed below:"
vboxmanage list usbhost | sed -n 's/Product:            //gp' | \
while read line
do
echo " [$cout] $line"
((cout++))
done
fi
# 设备的UUID
array=( $(vboxmanage list usbhost | grep UUID | awk '{print $2}') )
if [[ ! -z $1 ]]; then
seleted_devices=$1
else
read -p "I: select devices number to attach to $vbox_name:" seleted_devices
fi
# 当已经选择了相关的设备序号时,执行以下操作
if [[ $seleted_devices ]]; then
uuid=${array[$seleted_devices-1]}
echo ">> attach to vbox failure."
else
echo ">>> attach to vbox success."
fi
fi
  
  脚本2:~/bin/vboxusbdetach,从虚拟机上卸载任意设备



#!/bin/bash -
#===============================================================================
#
#          FILE: vboxdetach
#
#         USAGE: ./vboxdetach
#
#   DESCRIPTION: 用于卸载虚拟机上的设备
#
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: 这里假定虚拟机名为当前正在运行的虚拟机(自动识别)
#        AUTHOR: linkscue (scue), linkscue@gmail.com
#       CREATED: 2013年03月11日 14时42分26秒 HKT
#     COPYRIGHT: Copyright (c) 2013, linkscue
#      REVISION: 0.1
#  ORGANIZATION:
#===============================================================================
vbox_list=$(vboxmanage list vms | awk -F'"' '{print $2}')
line_cout=$(vboxmanage list usbhost | sed -n 's/Product:            //gp' | wc -l)
select_vm(){
select vbox_name in $vbox_list; do
echo "$vbox_name"
break;
done
}
# 有多个虚拟时,选择虚拟机
if [[ "$(echo $vbox_list | grep " ")" != "" ]]; then
if [[ "$1" != "" ]]; then
vbox_name=$(echo $1 | select_vm)
shift
else
vbox_name=$(select_vm)
fi
echo "Choose the $vbox_name"
else
vbox_name=$vbox_list
fi
# 当设备数量不为空时执行if操作
if [[ $line_cout ]]; then
cout=1
echo "I: the devices attach pc be listed below:"
vboxmanage list usbhost | sed -n 's/Product:            //gp' | \
while read line
do
echo " [$cout] $line"
((cout++))
done
fi
# 设备的UUID
array=( $(vboxmanage list usbhost | grep UUID | awk '{print $2}') )
if [[ ! -z $1 ]]; then
seleted_devices=$1
else
read -p "I: select devices number to attach to $vbox_name:" seleted_devices
fi
# 当已经选择了相关的设备序号时,执行以下操作
if [[ $seleted_devices ]]; then
uuid=${array[$seleted_devices-1]}
echo ">> detach from vbox failure."
else
echo ">>> detach from vbox success."
fi
fi
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56901-1-1.html 上篇帖子: 详细 完整分布模式安装hadoop VirtualBox 3虚拟机 下篇帖子: Virtualbox虚拟机设置不完全笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表