Jak mogę zrobić zrzut ekranu ekranu logowania?

31

Jak mogę zrobić zrzut ekranu ekranu logowania?

Nie chcę ponownie tworzyć mojej instalacji Ubuntu na maszynie wirtualnej.

ændrük
źródło
1
Pierwszą rzeczą, której szukałem, jest coś, co przechwytuje dane wyjściowe X. Poszukiwanie „screenshot xserver” prowadzi mnie do tej odpowiedzi na Linuxquestions.org .
Lekensteyn
Ta powiązana dyskusja może być istotna: superuser.com/q/290432/120246
Waldir Leoncio
Udostępniłem skrypt, aby to zrobić, w tym askubuntu.com/questions/177067/…
Nafis Ahmad

Odpowiedzi:

17

Ten blog może być pomocny: http://ptspts.blogspot.com/2010/02/how-to-create-screen-shot-of-gdm-login.html

Zainstaluj ImageMagick do konwersji formatu pliku obrazu poniżej:

sudo apt-get install imagemagick

Utwórz skrypt pomocnika:

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

Upewnij się, że ekran logowania jest aktywny (wyloguj się lub ponownie uruchom urządzenie i poczekaj, aż zobaczysz ekran logowania). Zaloguj się w trybie tekstowym (naciskając Ctrl-Alt-F1) lub używając SSH. Utwórz zrzut ekranu, uruchamiając

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

Możesz się teraz zalogować (naciskając najpierw Ctrl-AltF7, aby wrócić do ekranu logowania GDM). Konwertuj zrzut ekranu na JPEG i / lub PNG:

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

Wyświetl zrzut ekranu w swojej ulubionej przeglądarce zdjęć.

Niroshan
źródło
4
Skończyło się na użyciu sudo sh -c 'sleep 5s; xwd -display :0 -root | convert - screenshot.png'z wirtualnej konsoli i przejściu do ekranu logowania podczas 5-sekundowego snu.
ændrük
3
Poprawiłem to dla lightdm. $ echo 'DISPLAY =: 0 XAUTHORITY = / var / run / lightdm / root /: 0 xwd -root'> /tmp/shot.sh
popey
11

Dla wersji 11.10 i Lightdm i nowszych

Możesz spróbować uruchomić unity-greeter --test-modew terminalu. Wyświetla ekran logowania w ramach sesji. Następnie możesz zrobić zrzut ekranu ekranu logowania, jak zwykle w przypadku każdej innej aplikacji.

wprowadź opis zdjęcia tutaj

jokerdino
źródło
ale to zbyt ogólne, żadnych modyfikacji nie można zobaczyć. czy jest jakiś sposób przetestowania bieżących modyfikacji?
Ubuntuser,
@Ubuntuser Nie wiem o tym. Dla jakiej modyfikacji testujesz?
jokerdino
Testuję czytnik linii papilarnych. na ekranie logowania i ekranie blokady wyświetla się ładnie. chcę zrobić zrzut ekranu z obu stron.
Ubuntuser
@Ubuntuser Zgaduję, że dokonane modyfikacje wpływają bezpośrednio na lightdm, a nie na witającego Jedność? Nie jestem pewien. Po prostu spekuluję. Możesz zadać nowe pytanie ...
jokerdino
8

Możesz spróbować:

gnome-screenshot -d 10

nie musisz niczego instalować, wystarczy wpisać polecenie i zablokować ekran, ekran zostanie wystrzelony w ciągu 10 sekund po wykonaniu polecenia.

Co więcej ... polecenie zablokuje ekran, skopiuje zrzut ekranu do schowka i ponownie odblokuje ekran. Wszystko po swojemu.

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

 wprowadź opis zdjęcia tutaj

Mahmoud S. Marwad
źródło
3
To zdecydowanie najłatwiejsze rozwiązanie, jakie znalazłem.
Caustic
7

Dla Ubuntu 14.04

Powyższe odpowiedzi nie działały dla mnie w Ubuntu 14.04 - rozejrzałem się i znalazłem to, które działa.

  1. Zainstaluj ImageMagick

    sudo apt-get install imagemagick
    
  2. Utwórz plik w katalogu domowym o nazwie shot.shnajlepiej w folderze domowym i wklej w nim następujący kod:

    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. Zrób to

    sudo chmod +x shot.sh
    
  4. Wyloguj się z systemu. Naciśnij Ctrl+ Alt+, F1aby przejść do konsoli (tty1) i zalogować się. Uruchom skrypt za pomocą tego polecenia:

    sudo ./shot.sh
    

Nastąpi powrót do ekranu graficznego interfejsu logowania (rozdz. 7), a po pięciu sekundach zrzut ekranu zostanie zapisany w katalogu domowym z nazwą pliku screenshot.png.


To moje:

wprowadź opis zdjęcia tutaj

Źródło: http://itsfoss.com/screenshot-login-screen-ubuntu-linux/

Parto
źródło
Mogę potwierdzić, że ten skrypt powłoki nadal działa na Ubuntu 18.10 Cosmic Cuttlefish z Unity 7.5.0. Mogę wykonać zrzut ekranu z powodzeniem za jednym razem. Dziękuję @Parto.
Ade Malsasa Akbar
6

Wpisz to w terminalu:

dm-tool add-nested-seat --fullscreen

To jest to! wykonaj zrzut ekranu jak zwykle

Naciśnij klawisze Alt + F4, aby zamknąć okno pełnoekranowe ekranu logowania

przyjaciel
źródło
To jest piękno! Geniusz!
Anwar
Mogę również potwierdzić, że ta sztuczka działa doskonale na Ubuntu 18.10. Myślę, że ta sztuczka jest łatwiejsza i szybsza niż skrypt powłoki. Dziękuję @afriend.
Ade Malsasa Akbar
2

Chciałem tylko zauważyć, że miałem z tym wiele problemów, robiąc to na Ubuntu 10.04 LTS z tym - oto moje rozwiązanie:

Jestem na komputerze A i loguję się na komputerze B przez 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:~$ 

Następnie podejmuję kilka prób uchwycenia zrzutu ekranu, które zakończyły się niepowodzeniem. Problem można sprowadzić do xwininfoniemożności sprawdzenia stanu okna:

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'

Okazuje się, że z jakiegoś powodu poprawne wywołanie X-Windowsa za pomocą ssh to DISPLAY=:0.0 sudo xwininfo ...- to znaczy DISPLAY=:0.0zmienna środowiskowa jest pierwsza; sudoidzie sekundy - a następnie odpowiednie polecenie 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

Teraz, gdy wiemy, że xwininfomożemy zbadać stan, nie ma również problemu z przechwyceniem zrzutu ekranu przez xwd:

myusername@pcB:~$ DISPLAY=:0.0 sudo xwd -root > /tmp/shot.xwd
sdaau
źródło
0

Zredagowałem „/ etc / mdm / Init / Default” i dodałem:

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

przed wierszem „wyjście 0”.

Przy następnym logowaniu liczę do pięciu, wydaje sygnał dźwiękowy i dostaję zrzut ekranu w „/ root”.

Ikem Krueger
źródło