ฉันจะจับภาพหน้าจอของหน้าจอเข้าสู่ระบบได้อย่างไร?


31

ฉันจะจับภาพหน้าจอของหน้าจอเข้าสู่ระบบได้อย่างไร?

ฉันไม่ต้องการสร้างการติดตั้ง Ubuntu ใหม่ในเครื่องเสมือน


1
สิ่งแรกที่ผมจะมองหาเป็นสิ่งที่จับเอาท์พุทของการค้นหา X. สำหรับ "ภาพหน้าจอ xserver" นำไปสู่การฉันไปที่คำตอบเกี่ยวกับเรื่องนี้ Linuxquestions.org
Lekensteyn

การสนทนาที่เกี่ยวข้องนี้อาจเกี่ยวข้อง: superuser.com/q/290432/120246
Waldir Leoncio

ฉันได้แชร์สคริปต์เพื่อทำสิ่งนี้ในaskubuntu.com/questions/177067/…
Nafis Ahmad

คำตอบ:


17

บล็อกนี้อาจมีประโยชน์: http://ptspts.blogspot.com/2010/02/how-to-create-screen-shot-of-gdm-login.html

ติดตั้ง ImageMagick สำหรับการแปลงรูปแบบไฟล์ภาพด้านล่าง:

sudo apt-get install imagemagick

สร้างสคริปต์ผู้ช่วยเหลือ:

echo 'DISPLAY=:0 XAUTHORITY=/var/lib/gdm/:0.Xauth xwd -root' >/tmp/shot.sh

ตรวจสอบให้แน่ใจว่าหน้าจอการเข้าสู่ระบบของคุณใช้งานอยู่ (ออกจากระบบหรือรีบูตเครื่องและรอจนกว่าคุณจะเห็นหน้าจอการเข้าสู่ระบบ) ล็อกอินในโหมดข้อความ (โดยการกด Ctrl-Alt-F1) หรือใช้ SSH สร้างภาพหน้าจอโดยการเรียกใช้

sudo bash /tmp/shot.sh >/tmp/shot.xwd

คุณสามารถเข้าสู่ระบบได้ทันที (โดยกด Ctrl-AltF7 ก่อนเพื่อกลับไปที่หน้าจอเข้าสู่ระบบ GDM) แปลงภาพหน้าจอเป็น JPEG และ / หรือ PNG:

convert -quality 50 /tmp/shot.xwd /tmp/shot.jpg
convert /tmp/shot.xwd /tmp/shot.png

ดูภาพหน้าจอในโปรแกรมดูภาพที่คุณชื่นชอบ


4
ฉันลงเอยด้วยการใช้sudo sh -c 'sleep 5s; xwd -display :0 -root | convert - screenshot.png'จากคอนโซลเสมือนและเปลี่ยนเป็นหน้าจอเข้าสู่ระบบในช่วงเวลา 5 วินาที
ændrük

3
ฉัน tweaked นี้เพื่อ lightdm $ echo 'DISPLAY =: 0 XAUTHORITY = / var / run / lightdm / root /: 0 xwd -root'> /tmp/shot.sh
popey

11

สำหรับ 11.10 และ Lightdm และใหม่กว่า

คุณสามารถลองใช้งานunity-greeter --test-modeในเทอร์มินัล จะแสดงหน้าจอเข้าสู่ระบบภายในเซสชั่น จากนั้นคุณสามารถจับภาพหน้าจอของหน้าจอเข้าสู่ระบบเหมือนปกติกับแอพพลิเคชั่นอื่น ๆ

ป้อนคำอธิบายรูปภาพที่นี่


แต่นั่นธรรมดาเกินไปการแก้ไขใด ๆ ที่ไม่สามารถมองเห็นได้ มีวิธีใดในการทดสอบการดัดแปลงปัจจุบัน
Ubuntuser

@Ubuntuser ไม่ใช่ที่ฉันรู้ คุณกำลังทำการปรับเปลี่ยนแบบใด
jokerdino

ฉันกำลังทดสอบตัวอ่านลายนิ้วมือ บนหน้าจอเข้าสู่ระบบและหน้าจอล็อคมันแสดงเป็นอย่างดี ฉันต้องการถ่ายภาพหน้าจอของทั้งสอง
Ubuntuser

@ ผู้สนับสนุนฉันเดาว่าการดัดแปลงที่คุณทำมีผลกับ lightdm โดยตรงไม่ใช่ Unity-greeter ใช่ไหม ฉันไม่แน่ใจ. ฉันแค่คาดเดา คุณอาจต้องการถามคำถามใหม่ ..
jokerdino

8

คุณสามารถลองสิ่งนี้:

gnome-screenshot -d 10

คุณไม่จำเป็นต้องติดตั้งสิ่งใด ๆ เพียงแค่ป้อนคำสั่งและล็อคหน้าจอหน้าจอจะถูกยิงภายใน 10 วินาทีหลังจากที่คำสั่งถูกเรียกใช้งาน

ยิ่งขึ้น .. คำสั่งจะล็อคหน้าจอคัดลอกภาพหน้าจอไปยังคลิปบอร์ดและปลดล็อคหน้าจออีกครั้ง ทั้งหมดด้วยตัวเอง

gnome-screensaver-command -l && sleep 2 && gnome-screenshot -c && loginctl unlock-session

 ป้อนคำอธิบายรูปภาพที่นี่


3
นี่คือทางออกที่ง่ายที่สุดที่ฉันพบ
กัดกร่อน

7

สำหรับ Ubuntu 14.04

คำตอบข้างต้นไม่ได้ผลสำหรับฉันใน Ubuntu 14.04 - ฉันค้นหารอบ ๆ และพบว่าใช้งานได้

  1. ติดตั้ง ImageMagick

    sudo apt-get install imagemagick
    
  2. สร้างไฟล์ในโฮมไดshot.shเร็กตอรี่ของคุณชื่อเด่นกว่าในโฮมโฟลเดอร์ของคุณและวางรหัสต่อไปนี้ไว้ภายใน:

    chvt 7;
    sleep 5s;
    DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 xwd -root -out ~/screenshot.xwd;
    convert ~/screenshot.xwd ~/screenshot.png;
    rm ~/screenshot.xwd
    
  3. ทำให้ปฏิบัติการได้

    sudo chmod +x shot.sh
    
  4. ออกจากระบบ กดCtrl+ Alt+ F1เพื่อไปที่คอนโซล (tty1) และเข้าสู่ระบบ รันสคริปต์โดยใช้คำสั่งนี้:

    sudo ./shot.sh
    

มันจะพาคุณกลับไปที่อินเตอร์เฟซแบบกราฟิกหน้าจอเข้าสู่ระบบ (chvt 7) screenshot.pngและหลังจากห้าวินาทีมันจะใช้เวลาและบันทึกภาพหน้าจอในไดเรกทอรีบ้านของคุณด้วยชื่อไฟล์


นี่คือของฉัน:

ป้อนคำอธิบายรูปภาพที่นี่

ที่มา: http://itsfoss.com/scaucet-login-screen-ubuntu-linux/


ฉันสามารถยืนยันได้ว่าเชลล์สคริปต์นี้ยังคงใช้งานได้ใน Ubuntu 18.10 Cosmic Cuttlefish พร้อม Unity 7.5.0 ฉันสามารถจับภาพหน้าจอได้ในครั้งเดียว ขอบคุณ @Parto
Ade Malsasa Akbar

6

พิมพ์สิ่งนี้ในเทอร์มินัล:

dm-tool add-nested-seat --fullscreen

แค่นั้นแหละ! ถ่ายภาพหน้าจอตามปกติ

กด Alt + F4 เพื่อปิดหน้าต่างเต็มหน้าจอของหน้าจอเข้าสู่ระบบของคุณ


นั่นคือความงาม! Genius!
อันวาร์

ฉันยังสามารถยืนยันเคล็ดลับนี้ทำงานได้อย่างสมบูรณ์บน Ubuntu 18.10 ฉันคิดว่าเคล็ดลับนี้ง่ายกว่าและเร็วกว่าเชลล์สคริปต์ ขอบคุณ @afriend
Ade Malsasa Akbar

2

แค่อยากจะทราบว่าฉันมีปัญหามากมายที่ทำสิ่งนี้บน Ubuntu 10.04 LTS ด้วยสิ่งนี้ - นี่คือวิธีแก้ปัญหาของฉัน:

ฉันใช้เครื่อง A และฉันเข้าสู่เครื่อง B ผ่าน ssh:

myusername@pcA:~$ ssh pcB
myusername@pcB's password: 
Linux pcB 2.6.32-44-generic #98-Ubuntu SMP Mon Sep 24 17:32:45 UTC 2012 i686 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/

myusername@pcB:~$ 

จากนั้นฉันดำเนินการพยายามจับภาพหน้าจอหลายครั้งซึ่งไม่สำเร็จ ปัญหาสามารถลดลงจนxwininfoไม่สามารถสอบสวนสถานะหน้าต่าง:

myusername@pcB:~$  xwininfo
xwininfo:  unable to open display ''

myusername@pcB:~$ sudo xwininfo
[sudo] password for myusername: 
xwininfo:  unable to open display ''

myusername@pcB:~$ DISPLAY=:0.0 xwininfo
No protocol specified
xwininfo:  unable to open display ':0.0'

myusername@pcB:~$ DISPLAY=:0 xwininfo
No protocol specified
xwininfo:  unable to open display ':0'

ด้วยเหตุผลบางประการการร้องขอที่ถูกต้องสำหรับการกำหนดเป้าหมาย X-windows ผ่าน ssh คือDISPLAY=:0.0 sudo xwininfo ...- นั่นคือDISPLAY=:0.0ตัวแปรสภาพแวดล้อมไปก่อน sudoไปสอง - แล้วคำสั่งที่สอดคล้องกัน X:

myusername@pcB:~$ DISPLAY=:0 sudo xwininfo

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

myusername@pcB:~$ DISPLAY=:0.0 sudo xwininfo -root

xwininfo: Window id: 0x109 (the root window) (has no name)

  Absolute upper-left X:  0
  Absolute upper-left Y:  0
  Relative upper-left X:  0
  Relative upper-left Y:  0
  Width: 1366
  Height: 768
  Depth: 24
  Visual: 0x21
  Visual Class: TrueColor
  Border width: 0
  Class: InputOutput
  Colormap: 0x20 (installed)
  Bit Gravity State: ForgetGravity
  Window Gravity State: NorthWestGravity
  Backing Store State: NotUseful
  Save Under State: no
  Map State: IsViewable
  Override Redirect State: no
  Corners:  +0+0  -0+0  -0-0  +0-0
  -geometry 1366x768+0+0

ตอนนี้เรารู้แล้วว่าxwininfoสามารถสอบสวนสถานะได้แล้ว แต่ก็ไม่มีปัญหาในการจับภาพหน้าจอผ่านxwd:

myusername@pcB:~$ DISPLAY=:0.0 sudo xwd -root > /tmp/shot.xwd

0

ฉันแก้ไข "/ etc / mdm / Init / Default" และเพิ่ม:

scrot -d 5 -e 'mv $f /root' &

ก่อนบรรทัดด้วย "exit 0"

ในครั้งต่อไปที่ฉันเข้าสู่ระบบฉันนับถึงห้าปี๊บและฉันได้ภาพหน้าจอเป็น "/ root"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.