如何截取VirtualBox虚拟机

如何截取VirtualBox虚拟机 VirtualBox是一个伟大的   虚拟化解决方案,但是如果缺少一个大的功能:能力采取...

如何取消VirtualBox VM的截图

VirtualBox是一个伟大的虚拟化解决方案,但是如果缺少一个大的特点:可以拍摄虚拟机的截图。 当然,您可以使用主机操作系统的打印屏幕功能,但是这样可以清除整个工作空间的图片,包括窗口装饰等,您必须在iage编辑软件中删除这是一项繁琐的工作。 本教程介绍如何创建一个小脚本,当您单击它时,会自动截取VirtualBox VM的屏幕截图; 它使用VirtualBox命令行工具VBoxManage。

本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1初步说明

我将创建脚本vboxscreenshot.sh并将其放在桌面上,以便您可以轻松地双击它来创建屏幕截图。 屏幕截图将放在桌面上(您可以在脚本中指定另一个输出目录); 文件名将如1.png2.png3.png等,即脚本会自动增加文件名,以便您以后知道屏幕截图的顺序。

我假设您一次只运行一个虚拟机,因为脚本会尝试自动查找正在运行的虚拟机的名称。 或者,您可以对要将其截取的虚拟机的名称进行硬编码。

2创建vboxscreenshot.sh

打开gedit ...

...并创建一个包含以下内容的新文件:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

vboxmanage=/usr/bin/VBoxManage

# Specify the output directory
outputdir=~/Desktop

# Find the next free image ID (1.png, 2.png, 3.png, etc.)
cd $outputdir
list=([0-9]*)
last=${list[@]: -1}
nextnum=$((10#${last%%[^0-9]*} + 1))

# Find out the name of the running VM; this assumes that you have just one VM running at a time
for uuid in $($vboxmanage list runningvms --long | grep "UUID:            " | awk 'BEGIN{FS="UUID:            "}{print $2}')
do
  vm=$($vboxmanage showvminfo $uuid      | sed -e'/^USB Device Filters:/,$ d' | grep "Name:"  | awk 'BEGIN{FS="Name:            "}{print $2}')
done

# Alternatively, you can specify the name of the VM here of which you want to take a screenshot
#vm="Ubuntu 12.04 Desktop"

$vboxmanage controlvm "$vm" screenshotpng $outputdir/$nextnum.png
exit 0

如果不想在桌面上放置屏幕截图,您可以调整outputdir变量中的输出目录。 如果要指定虚拟机的名称,请取消注释#vm =“Ubuntu 12.04 Desktop”行,并将Ubuntu 12.04 Desktop替换为虚拟机的名称; 否则脚本会自己确定运行的虚拟机的名称(在这种情况下,一次只运行一个虚拟机很重要)。

将文件另存为vboxscreenshot.sh在桌面上:

然后右键单击该文件,然后选择属性

转到权限选项卡,并选中允许执行文件作为程序复选框:

而已! 现在启动一个VirtualBox VM。 如果要拍摄虚拟机的屏幕快照,请双击桌面上的vboxscreenshot.sh图标。 单击运行时询问您是否要运行“vboxscreenshot.sh”或显示其内容?

之后,您将在桌面上找到屏幕截图(在本例中为1.png ):

3无需额外对话就可以截图

看到你想要运行“vboxscreenshot.sh”还是显示其内容可能会很烦人吗? 每次你想要截图的对话。 要摆脱对话,打开鹦鹉螺...

...并转到编辑>首选项

转到行为选项卡,选择在可执行文本文件部分打开时运行可执行文本文件

从现在起,当您双击vboxscreenshot.sh图标时,屏幕截图将自动创建,无需任何对话。