我正在使用 KUbuntu,我想定期截取我在 virtualbox 下运行的虚拟机的屏幕截图(保存为 PNG)。如果可能的话,请在虚拟机外每 30 分钟执行一次。
我查看了scrot
和spectacle
。它们似乎都不知道“窗口”是什么,也就是说,如果它被其他东西覆盖,或者我切换到另一个桌面,它将不会在屏幕截图上显示。(或者我错过了这个选项)
VirtualBox 可以使用[View][Take screenshot]
,但如何实现自动化?我能以某种方式模拟在虚拟机中定期按下 Host-E 吗?
我可以录制 VM 会话,[View][Recording]
然后从视频中提取快照,但我们讨论的是为期一周的会话。
我可以在虚拟机内部进行设置,但是我宁愿不这样做......
答案1
我设法用 ImageMagick 做到了。它只需要在启动时单击我想要的窗口来选择它,然后它每 N 分钟截取一次屏幕截图(脚本参数 $1):
#! /bin/bash
INTERVAL=${1:-1} # Default 1 min
DESTDIR=~/Pictures/Snapshots
echo "Click on the window you want to screenshot every $INTERVAL minutes"
ID=$(xwininfo |
sed -e 's/^ *//' |
grep -E "Window id" |
awk '{ print $4 }'
)
while true; do
import -window $ID $DESTDIR/$(date +%Y%m%d-%H%M).png
sleep $(($INTERVAL * 60))
done