最近,我测评了一台因为定制界面而使人们不能直接在设备上进行截屏操作的树莓派 4 的笔记本电脑。因此,我只能通过SSH进行远程截屏。这其实是很容易做到的,因为大多数的操作步骤都可以在其他Linux系统中重现,而不是树莓派特有的。
在树莓派中启用SSH
首先,在Windows Terminal终端窗口界面中使用sudo raspi-config指令启用SSH ,然后选择5. Interface Options选项,再选择P2 SSH ……

如果由于某种原因造成你无权访问终端,那么请从树莓派模块上取出MicroSD卡,然后用计算机在启动分区中创建一个名为“ ssh” 新的空文件夹。
现在,只要你有模块的用户名和密码,就可以从终端使用IP地址连接到SSH:
1 |
ssh <username>@<ip_address> |
或诸如Putty之类的程序。
远程截屏
现在,准备截图,如下图所示:
1 2 3 |
cd ~/Pictures sudo apt install scrot DISPLAY=:0 scrot screenshot.png |
其中,代码“scrot”是获取截屏的程序,DISPLAY定义是要捕获的图像,第三个参数是可以使用png、jpg或gif等图像文件的扩展名。
你可以随意使用不同的文件名对图像进行截屏,然后在树莓派上执行指令,并通过SSH将其传回计算机:
1 |
scp *.png <pc_username>@<pc_ip_address> |
或者你也可以使用Filezilla或其他支持SFTP(SSH文件传输协议)的程序从你的计算机中获取。
直接在计算机上保存树莓派截屏
如果你想直接在树莓派上截屏,并将图像直接保存在计算机上,那就可以先使用公钥/私钥设置,记得要用没有ssh密码的方式来进行操作,这样可以避免每次都要输入密码。
完成设置之后,你通过SSH登录到树莓派时,就不再需要输入密码了。
1 2 3 4 5 6 7 8 9 10 |
jaufranc@CNX-LAPTOP-4:~/.ssh$ ssh pi@192.168.1.9 Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Sep 10 10:57:06 2020 from 192.168.1.4 |
有两种方法可以从此处进行操作:从Linux计算机上或树莓派模块上启动指令。
从Linux计算机启动指令
返回计算机的终端窗口,然后运行以下指令远程截取屏幕并将图像文件保存到计算机中:
1 |
FILE="screenshot-001.png"; ssh pi@<pi_ip_address> 'DISPLAY=:0 scrot "'$FILE'"; scp "'$FILE'" <pc_user>@<pc_ip_address>:<remote_directory>; rm "'$FILE'"' |
对于每个新的截屏,只需更改FILE变量的值即可。指令行通过SSH连接到树莓派上,获取到截屏,并将其传输到你的计算机,然后将其从树莓派板上删除。
【 更新:有评论指出,使用maim是一种更简练的方法。它将截屏传输到stdout,并允许我们通过简单的重新定向操作将图像保存到本地计算机。接下来,我们一起来回顾一下:】
首先,在树莓派上安装maim:
1 |
sudo apt install maim |
现在,我们可以使用更简单的指令从计算机上捕获树莓派截屏:
1 |
ssh -t pi@<pi_ip_address> 'DISPLAY=:0 maim' > screenshot.png |
从树莓派启动截屏
如果你的计算机不是Linux系统,除非你将Windows重装成Linux系统,否则这个方法就是无效的。
另一种方法就是在Windows系统中安装SSH服务器,然后在树莓派中运行以下指令:
1 2 |
pi@raspberrypi:~/Pictures $ FILE="screenshot-002.png"; DISPLAY=:0 scrot $FILE; scp $FILE <pc_user>@<pc_ip_address>:<remote_directory>; rm $FILE screenshot-002.png 100% 536KB 33.8MB/s 00:00 |
整个过程就是这样。如果你希望只使用鼠标选择一个区域后就可以完成自动上传截屏,那么请参见upscrot Python脚本。

文章翻译者:Jacob,嵌入式系统测试工程师、RAK高级工程师,物联网行业多年工作经验,熟悉嵌入式开发、测试各个环节,对不同产品有自己专业的分析与评估。