Mengambil tangkapan layar dari sesi pengguna saat ini

2

(Maafkan saya jika terminologi saya tidak cukup akurat di sini)

Saya memiliki pengaturan tugas cron yang digunakan scrotuntuk mengambil tangkapan layar desktop saya pada berbagai interval.

Namun, ketika saya mengalihkan pengguna ke akun lain (tanpa log off) tangkapan layar yang kembali hanya merupakan bidikan layar kunci.

Apakah ada cara bagi saya untuk mendapatkan tangkapan layar dari sesi pengguna saat ini? Yaitu, apa yang sebenarnya ada di layar?

Thomas Shields
sumber
Anda ingin beralih ke pengguna lain, tetapi masih dapat mengambil tangkapan layar sesi pengguna sebelumnya, bukan?
Sergiy Kolodyazhnyy
Tidak, saya ingin beralih ke pengguna lain dan memiliki tugas cron tangkapan layar dari pengguna sebelumnya mengambil tangkapan layar dari apa yang SEBENARNYA di layar, daripada sesi pengguna sebelumnya
Thomas Shields
Saya sarankan Anda membuat skrip shell dengan while yang akan mengambil tangkapan layar dan kemudian tidur x menit yang Anda inginkan; menyimpannya /usr/binagar dapat diakses oleh semua pengguna, dan kemudian membuat file .desktop di /etc/xdg/autostart folder untuk membuatnya tersedia untuk setiap pengguna. Adapun menyimpan screenshot. . . .jika Anda menggunakannya gnome-screenshotmenyimpan tangkapan layar di direktori pengguna saat ini. Anda mungkin ingin menambahkan variabel lain yang akan ditambahkan dan menggunakan -f flag di gnome-screenshot untuk menyimpan screnshot dengan variabel itu sebagai nama. Atau gunakan $ (tanggal).
Sergiy Kolodyazhnyy
@Serg, aku mempertimbangkan untuk menuruni rute itu. Saya akan mencobanya segera dan melaporkan kembali
Thomas Shields

Jawaban:

3

Sejauh menyangkut X11, ketika Anda beralih ke pengguna lain, pengguna itu berada pada tampilan yang sama sekali berbeda.

Di sesi Anda, jika Anda menjalankan:

echo $DISPLAY

Anda akan memiliki :0, tampilan virtual pertama. Di pengguna kedua, yang sama akan memberi Anda :1, tampilan kedua.

Anda dapat melihat layar yang digunakan dengan perintah w:

[romano:~] % w  
 11:32:03 up  1:05,  8 users,  load average: 0,10, 0,24, 0,30
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
romano   :0       :0               10:27   ?xdm?   6:25   0.13s gdm-session-wor
romano   pts/1    :0               11:03   26:49   0.10s  0.10s zsh
romano   pts/3    :0               11:21    0.00s  0.12s  0.01s w
default  :1       :1               11:24   ?xdm?   6:25   0.07s gdm-session-wor
default  pts/15   :1               11:24    1:56   0.05s  0.05s bash

Untuk dapat melakukan tangkapan layar dari satu layar dari yang lain, atau dari pengguna lain, pengguna yang akan "shotted" harus mengeluarkan perintah

xhost + 

untuk mengaktifkan akses (bahkan tidak rootakan dapat melakukan snapshot sebaliknya). Setelah itu, Anda bisa melakukan a

DISPLAY=:1 scrot 

dari skrip atau pengguna lain. Perhatikan bahwa jika Anda memotret layar yang tidak aktif (ditampilkan), Anda akan memiliki layar hitam atau hal-hal aneh --- siapa tahu apa yang ada dalam memori buffer video ...

Sekarang terserah pada Anda untuk menulis skrip yang menjelajahi semua ini ... Anda pada prinsipnya harus mendeteksi pengguna mana yang aktif (tidak mudah --- atau cukup potret semua layar dan buang yang hitam setelahnya) dan lakukan tangkapan layar.

Semoga berhasil!

Rmano
sumber
0

Anda perlu menyimpan tangkapan layar di area yang dapat dilihat secara publik, dan juga xserver mengunci layar saat pengguna berpindah (bukan fakta yang diperlihatkan, tetapi asumsi yang masuk akal). Anda mungkin perlu mengatur xserver untuk menampilkan ini ke file di direktori home, sehingga ketika tugas cron dipanggil, Anda menjalankan xserver untuk membuat layar ke file, bukan untuk tampilan.

Trey Gordon
sumber
Selain itu, Anda sebaiknya memiliki alasan bagus untuk melihat tangkapan layar ini dari pengguna lain. Ini mungkin risiko keamanan, mengingat bagaimana file dapat dibaca dari hard drive jika terjadi akses tidak sah.
Trey Gordon
0

Ketika Anda beralih ke pengguna lain maka Anda membuka sesi baru untuk pengguna baru, dan sesi lama untuk pengguna pertama baru saja masuk. Ini adalah sikap normal cron, cron dikaitkan dengan pengguna pertama sehingga hanya akan bekerja dengan sesi-nya saja.

Saya harap Anda mengerti apa yang saya maksud. Lagipula saya tidak terlalu bagus dalam bahasa Inggris, agar bisa berfungsi untuk pengguna lain, Anda harus membuat cron yang sama untuk pengguna kedua, sehingga Anda dapat mengambil gambar untuk setiap pengguna.

Maythux
sumber
Tapi pekerjaan cron masih berjalan. Jika saya memiliki akses root, saya tidak melihat mengapa saya tidak bisa mengambil layar pengguna yang login daripada milik saya.
Thomas Shields
Setiap pengguna memiliki cron sendiri yang berfungsi untuk sesi sendiri.
Maythux
dan seperti yang saya katakan di atas, sesi hanya akan dikunci di jendela login ketika Anda beralih pengguna.
Maythux
Benar, saya mengerti. Tapi itu tidak seperti pekerjaan cron untuk pengguna saya berhenti berjalan.
Thomas Shields
Ini tidak akan berhenti berjalan karena sesi Anda masih aktif, Anda harus keluar atau Anda dapat membuat cron baru untuk membunuh yang pertama ketika mengunci layar Anda
Maythux