लॉक-स्क्रीन इवेंट लॉग करना


10

मुसीबत

सटीक तिथि और समय देखें जब कोई उपयोगकर्ता लॉक करता है और अपने कार्य केंद्र को अनलॉक करता है - फेडोरा 18 चला रहा है।

सवाल

क्या फेडोरा 18 (या एक सामान्य लिनक्स समाधान) पर "लॉक-स्क्रीन" में प्रवेश करने और बाहर निकलने वाले किसी उपयोगकर्ता की घटना को लॉग इन करने का कोई तरीका है?

कोशिश की

  1. देखने की कोशिश की /var/log/boot- कोई मदद नहीं। और देखते हुए /var/log/messagesमुझे संदेश मिला systemd-logind[xxx]: New session 140 of user YYY, लेकिन लॉक-स्क्रीन (सूक्ति) घटना नहीं मिल सकी।
  2. यह देखने की कोशिश की /var/log/audit/audit.logकि सभी प्रकार के उपयोगकर्ताओं और सेवाओं के बारे में PAM से संबंधित बहुत सारे संदेश हैं, लेकिन मुझे वास्तव में यकीन नहीं है कि लॉक-स्क्रीन गतिविधि खोजने के लिए क्या देखना है

जवाबों:


7

यहां "डबस-मॉनिटर" का उपयोग करके एक और समाधान है। थोड़ा बैश स्क्रिप्ट लॉगिंग स्क्रीन गतिविधि।

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

मैंने इसे एक .shफाइल में डाला और इसे गनोम के स्टार्टअप एप्लिकेशन में जोड़ा। क्या यह टिन पर कहते है, THX
aross

4

देख लेने की कोशिश करो /var/log/auth.log। आपको PAM और / या स्क्रीनसेवर एप्लिकेशन से संबंधित कुछ संदेश देखने चाहिए।


मेरे पास नहीं है /var/log/auth.log, मेरे पास /var/log/audit/audit.logसभी प्रकार के उपयोगकर्ताओं और सेवाओं के बारे में बहुत सारे PAM से संबंधित संदेश हैं, लेकिन मुझे वास्तव में यकीन नहीं है कि लॉक-स्क्रीन गतिविधि खोजने के लिए क्या देखना है
tutuDajuju

मेरे पास /var/log/auth.log है और PAM का कोई संदेश नहीं है और न ही स्क्रीनसेवर ऐप को लॉक अप / लॉक ईवेंट के सापेक्ष।
ychaouche

4

हाँ, यह आपके लिए कहीं भी लॉग इन नहीं लगता है। @tutuDajuju का एक अच्छा समाधान है, इसलिए मैंने सोचा कि जो लोग रुचि रखते हैं, उनके लिए इसे bash (और gnome का उपयोग करने पर निर्भरता को दूर करूं, यह डेस्कटॉप वातावरण की परवाह किए बिना काम करना चाहिए) को पोर्ट करेगा।
यदि आपके पास यह पृष्ठभूमि में चल रहा है और इसे एक लॉग फ़ाइल में पाइप करें तो आपके पास आपका लॉग होगा।

#!/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

यह केडीई के साथ मेरे फेडोरा पर ठीक ठाक चलता है, लेकिन मुझे लगता है कि इसे अन्य चीजों पर काम करना चाहिए जैसे कि डेबिन के साथ गनोम वगैरह।
आपके पास समस्याएँ हो सकती हैं यदि आपका grepसमर्थन नहीं करता है -P(जिस स्थिति में आप अभी उपयोग कर सकते हैं sed)।


2

हो सकता है कि यह भी जवाब दे, हालांकि यह मेरा जवाब नहीं है (मेरे बॉस ने मुझे समाधान के साथ प्रदान किया) दूसरों को उसी ज़रूरत (या जिज्ञासु दिमाग) के साथ मदद करने के लिए।

tl; dr: लॉकस्क्रीन के सक्रिय / निष्क्रिय संकेतों को प्राप्त करने के लिए डी-बस का उपयोग करें।

ऐसा लगता है कि डी-बस मैसेजिंग को गनोम ऐप और स्क्रीनसेवर ऐप द्वारा विशेष रूप से समर्थित किया गया है , और ऐसा लगता है कि ग्नोम -स्क्रीनसेवर ऐप ग्नोम शेल के लिए आधिकारिक लॉकिंग ऐप है।

इसलिए, इसका परीक्षण करने के लिए, मैंने अभी - अभी डब-मॉनीटर चलाया और प्रतिक्रिया प्राप्त की:

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

मैंने इस गतिविधि को एक फ़ाइल में लॉग करने के लिए एक छोटी अजगर स्क्रिप्ट लिखी है:

#!/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

मतदान? संसाधनों की बर्बादी क्या है।
ychaouche

2

आप किस स्क्रीनसेवर का उपयोग कर रहे हैं? यदि यह xscreensaver है, तो लॉग विकल्प को चालू करें और लॉग फ़ाइल की निगरानी करने का प्रयास करें।

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


मैंने सिर्फ अपने ही उत्तर में लिखा है कि गनोम शेल में डिफॉल्ट
ग्नोम

2

लिनक्स टकसाल 17.1। मेरा डब स्ट्रिंग इस तरह दिखता है:

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

या ऐसा लग सकता है

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

2

मैं XFCE और XScreensaver का उपयोग कर रहा हूं। डबस-मॉनीटर न तो xscreensaver लॉगिंग मेरे लिए काम नहीं करता है। इसलिए मैंने एक और उपाय खोजा है। मुझे उम्मीद है कि यह अन्य लोगों के लिए भी उपयोगी होगा।

मैं XFCE प्रारंभ के दौरान यह कमांड चलाता हूं:

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

लॉक / अनलॉक घटनाओं को लॉग इन किया जाता है /var/log/messagesऔर इसके द्वारा पुनः प्राप्त किया जा सकता है

grep lockLogger /var/log/messages
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.