ฉันเพิ่งตรวจสอบแล็ปท็อป Raspberry Pi 4 ที่มีอินเทอร์เฟซที่กำหนดเองซึ่งทำให้ไม่สามารถจับภาพหน้าจอบนอุปกรณ์ได้โดยตรง ดังนั้นฉันจึงต้องจับภาพหน้าจอ (screenshot) จากระยะไกลผ่าน SSH มันค่อนข้างง่ายที่จะทำ ขั้นตอนส่วนใหญ่สามารถทำซ้ำได้ในระบบ Linux อื่น ๆ และRaspberry Pi แบบไม่เฉพาะเจาะจง
เปิดใช้งาน SSH ใน Raspberry Pi
ขั้นแรก เปิดใช้งาน SSH ด้วย sudo raspi-config ใน Windows Terminal แล้วเลือก 5, Interface Options จากนั้นเลือก P2 SSH …
หากด้วยเหตุผลบางอย่าง ทำให้คุณไม่สามารถเข้าถึงเทอร์มินัลได้ ให้นำการ์ด MicroSD ออกจากบอร์ด Raspberry Pi และจากคอมพิวเตอร์ ให้สร้างไฟล์เปล่าใหม่ชื่อ “ssh” ใน boot partition
เมื่อคุณมีชื่อผู้ใช้และ password สำหรับบอร์ดของคุณแล้ว คุณสามารถเชื่อมต่อกับ SSH ด้วย IP address จากเทอร์มินัล:
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 จากบรรทัดคำสั่งภายใน Raspberry Pi:
1 |
scp *.png <pc_username>@<pc_ip_address> |
หรือจากคอมพิวเตอร์ของคุณโดยใช้ Filezilla หรือโปรแกรมอื่นๆ ที่สนับสนุน SFTP (SSH File Transfer Protocol)
บันทึกภาพหน้าจอ Raspberry Pi โดยตรงบนคอมพิวเตอร์ของคุณ
หากคุณต้องการจับภาพหน้าจอบน Raspberry Pi ได้โดยตรงด้วยภาพที่บันทึกไว้ในคอมพิวเตอร์ของคุณโดยตรง คุณสามารถทำได้โดยเริ่มจากเลิกใช้ login เข้า SSH ด้วย password ssh ก่อน โดยใช้ public key และ private key เพื่อหลีกเลี่ยงการป้อน password ในแต่ละครั้ง
เมื่อคุณทำเสร็จแล้ว คุณไม่ควรถูกถาม password อีกต่อไปเมื่อเข้าสู่ระบบ SSH ไปยัง Raspberry Pi ของคุณ:
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 หรือจากบอร์ด Raspberry Pi
เริ่มคำสั่งจากคอมพิวเตอร์ลินุกซ์
กลับไปที่ Windows Terminal ในคอมพิวเตอร์ของคุณ และเรียกใช้คำสั่งต่อไปนี้เพื่อถ่ายภาพหน้าจอจากระยะไกลและบันทึกไฟล์ในคอมพิวเตอร์ของคุณ:
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 บรรทัดคำสั่งเชื่อมต่อกับ Raspberry Pi ผ่าน SSH ถ่ายภาพหน้าจอ ถ่ายโอนไปยังคอมพิวเตอร์ของคุณ และลบออกจากบอร์ด Raspberry Pi
วิธีทางเลือก
การ screenshot ด้วย maim
การใช้ maim เป็นวิธีที่สวยงามกว่าเนื่องจากส่งภาพหน้าจอไปที่ stdout ทำให้เราสามารถบันทึกภาพลงในคอมพิวเตอร์ local ด้วยการเปลี่ยนเส้นทางอย่างง่าย
ขั้นตอนแรก, install maim บน Raspberry Pi:
1 |
sudo apt install maim |
ตอนนี้เราสามารถจับภาพหน้าจอ Raspberry Pi จากคอมพิวเตอร์ของเราได้ด้วยคำสั่งที่ง่ายกว่ามาก:
1 |
ssh -t pi@<pi_ip_address> 'DISPLAY=:0 maim' > screenshot.png |
อย่างไรก็ตาม โปรดทราบว่ามันนำไปสู่ไฟล์ PNG ที่เสียหายในกรณีของฉัน อาจเป็นเพราะการตั้งค่าสภาพแวดล้อมที่แตกต่างกันระหว่างคอมพิวเตอร์และบอร์ด Raspberry Pi , YMMV… (อาจจะแตกต่างกันไป)
เริ่มการจับภาพหน้าจอจาก Raspberry Pi
หากคุณไม่มีคอมพิวเตอร์ Linux วิธีการข้างต้นจะไม่ทำงาน เว้นแต่คุณจะใช้ระบบย่อย Windows สำหรับ Linux อีกวิธีหนึ่งคือการติดตั้งเซิร์ฟเวอร์ SSH ใน Windows จากนั้นเรียกใช้คำสั่งต่อไปนี้ใน Raspberry Pi:
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 upscrot
แปลจากบทความภาษาอังกฤษ : How to Take a Remote Screenshot in Raspberry Pi over SSH
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT