Ghi nhật ký sự kiện màn hình khóa


10

Vấn đề

Xem ngày giờ chính xác mà người dùng khóa và mở khóa trạm làm việc của anh ta - chạy Fedora 18.

Câu hỏi

Có cách nào để đăng nhập một sự kiện của người dùng nhập và thoát khỏi "màn hình khóa" trên fedora 18 (hoặc một giải pháp linux chung) không?

Đã thử

  1. Đã thử nhìn /var/log/boot- không giúp đỡ. Và nhìn vào /var/log/messagestôi tìm thấy tin nhắn systemd-logind[xxx]: New session 140 of user YYY, nhưng không thể tìm thấy sự kiện khóa màn hình (gnome?).
  2. Đã thử xem /var/log/audit/audit.logcó nhiều thông báo liên quan đến PAM về tất cả các loại người dùng và dịch vụ, nhưng tôi không thực sự chắc chắn nên tìm gì để tìm hoạt động trên màn hình khóa

Câu trả lời:


7

Đây là một giải pháp khác sử dụng "dbus-màn hình". Một chút bash kịch bản hoạt động màn hình đăng nhập.

exit_report(){
echo "$(date) Monitoring Terminated."
}
trap "exit_report; exit;" 0

lockmon() {
adddate() {
    while IFS= read -r line; do
      echo "$(date) $line" | grep "boolean" | sed 's/   boolean true/Screen Locked/' | sed 's/   boolean false/Screen Unlocked/'
    done
}
echo "$(date) Monitoring Started."
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | adddate

}

lockmon >> lock_screen.log

Tôi đặt nó trong một .shtệp và thêm nó vào các ứng dụng khởi động của Gnome. Liệu những gì nó nói trên tin, thx
vào

4

Hãy thử xem /var/log/auth.log. Bạn sẽ thấy một số tin nhắn liên quan từ PAM và / hoặc ứng dụng bảo vệ màn hình.


Tôi không có /var/log/auth.log, tôi có /var/log/audit/audit.logrất nhiều tin nhắn liên quan đến PAM về tất cả các loại người dùng và dịch vụ, nhưng tôi không thực sự chắc chắn nên tìm gì để tìm hoạt động trên màn hình khóa
tutuDajuju

Tôi có /var/log/auth.log và không có tin nhắn từ PAM cũng như ứng dụng bảo vệ màn hình liên quan đến các sự kiện khóa / khóa.
ychaouche

4

Có, nó dường như không được ghi lại ở bất cứ đâu cho bạn. @tutuDajuju có một giải pháp tốt nên tôi nghĩ tôi sẽ chuyển nó sang bash (và loại bỏ sự phụ thuộc vào việc sử dụng gnome, điều này sẽ hoạt động bất kể môi trường máy tính để bàn) cho những ai quan tâm.
Nếu bạn có cái này chạy trong nền và chuyển nó vào một tệp nhật ký, bạn sẽ có nhật ký của mình.

#!/bin/bash

#prints out, among other things;
#      string "org.kde.screensaver"
#transform it to 'org.kde.screensaver'
service=$(\
    dbus-send \
        --session \
        --dest=org.freedesktop.DBus \
        --type=method_call \
        --print-reply \
        /org/freedesktop/DBus org.freedesktop.DBus.ListNames \
    | grep -o '[^"]*.screensaver'
)

#prints out, among other things;
#method bool org.freedesktop.ScreenSaver.SetActive(bool e)
#transform it to 'org.freedesktop.ScreenSaver'
interface=$(
    qdbus \
        $service /ScreenSaver \
    | grep -oP '[^ ]*(?=.SetActive)'
)

path='/ScreenSaver'

#monitor it with a while loop
dbus-monitor "type='signal',interface='$interface',member='ActiveChanged',path='$path'" \
| while read -r line; do
    #ignore the metadata and pull the 'boolean <true/false>' line
    read line

    #check if it is set to true
    if echo $line | grep -q 'true'; then
        echo "Locked at $(date)"
    else
        echo "Unlocked at $(date)"
    fi
done

Điều này chạy tốt trên Fedora của tôi với KDE, nhưng tôi đoán nó sẽ hoạt động trên những thứ khác như Debian với gnome et cetera.
Bạn có thể gặp sự cố nếu grepkhông hỗ trợ -P(trong trường hợp đó bạn chỉ có thể sử dụng sed).


2

Cũng có thể trả lời điều này mặc dù đó không phải là câu trả lời của tôi (ông chủ của tôi đã cung cấp cho tôi giải pháp) để giúp đỡ những người khác có cùng nhu cầu (hoặc đầu óc tò mò).

tl; dr: Sử dụng D-Bus để nhận tín hiệu được kích hoạt / hủy kích hoạt của màn hình khóa.

Có vẻ như nhắn tin D-Bus được hỗ trợ rộng rãi bởi các ứng dụng Gnome và cụ thể là ứng dụng ScreenSaver và có vẻ như ứng dụng gnome-Screensaver là ứng dụng khóa chính thức cho vỏ Gnome.

Vì vậy, để kiểm tra nó, tôi chỉ cần chạy màn hình dbus và nhận được phản hồi:

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"

Tôi đã viết một đoạn script python nhỏ để đăng nhập hoạt động này vào một tệp:

#!/usr/bin/env python
from datetime import datetime
import os
import pwd
import subprocess
import time

LOG_FILE = os.path.expanduser('~/hours_log.csv')


cmd = subprocess.Popen(["dbus-monitor \"type='signal',interface="
                        "'org.gnome.ScreenSaver'\""], shell=True,
                       stdout=subprocess.PIPE)

running = 0
while 1:
    time.sleep(0.1)
    if running:
        output = cmd.stdout.readline()
        status = 'unlocked' if 'true' in output else 'locked'
        new_line = "{time} {user} {status} the screen\n".format(
            time=datetime.now().ctime(),
            user=pwd.getpwuid(os.getuid())[0],
            status=status
        )
        with open(LOG_FILE, 'a') as f:
            f.write(new_line)

        running = 0
    line = cmd.stdout.readline()
    if "ActiveChange" in line and 'org.gnome.ScreenSaver' in line:
        running = 1

Bỏ phiếu? Thật là một sự lãng phí tài nguyên.
ychaouche

2

bạn đang sử dụng trình bảo vệ màn hình nào? nếu đó là xscreenaver, hãy bật các tùy chọn nhật ký và cố gắng theo dõi tệp nhật ký.

http://www.jwz.org/xscreenaver/man1.html


Tôi vừa viết trong câu trả lời của riêng mình rằng mặc định trong shell gnome là gnome-Screensaver, dường như là thứ tôi đang sử dụng (vì fedora cài đặt shell gnome theo mặc định) ...
tutuDajuju

2

Bạc hà Linux 17.1. Chuỗi dbus của tôi trông như thế này:

 dbus-monitor --session "type='signal',path='/org/cinnamon/ScreenSaver'" 

hoặc nó có thể trông như thế này

dbus-monitor --session "type='signal',interface='org.cinnamon.ScreenSaver'"

2

Tôi đang sử dụng XFCE và XSc Greensaver. Trình theo dõi dbus không ghi nhật ký xscreenaver không hoạt động đối với tôi. Vì vậy, tôi đã tìm thấy một giải pháp khác. Tôi hy vọng nó cũng sẽ có thể sử dụng được cho những người khác.

Tôi chạy lệnh này trong khi bắt đầu XFCE:

/usr/bin/xscreensaver-command -watch |logger -t lockLogger

Các sự kiện khóa / mở khóa được ghi lại /var/log/messagesvà có thể được truy xuất bởi

grep lockLogger /var/log/messages
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.