GNU/Linux >> Znalost Linux >  >> Linux

Protokolování událostí uzamčené obrazovky

Zde je další řešení pomocí "dbus-monitor". Malá aktivita na obrazovce protokolování skriptů bash.

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

Zkuste se podívat na /var/log/auth.log . Měli byste vidět některé související zprávy z PAM a/nebo aplikace spořiče obrazovky.


Ano, zdá se, že pro vás není nikde přihlášen. @tutuDajuju má dobré řešení, takže jsem si myslel, že ho přenesu na bash (a odstraním závislost na používání gnome, to by mělo fungovat bez ohledu na desktopové prostředí) pro ty, které to zajímá.
Pokud to běží na pozadí a přenášíte to do souboru protokolu, budete mít svůj protokol.

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

Na mé Fedoře s KDE to fungovalo dobře, ale myslím, že by to mělo fungovat na jiných věcech, jako je Debian s gnome a tak dále.
Pokud máte grep, můžete mít problémy nepodporuje -P (v takovém případě stačí použít sed ).


Linux
  1. Jak povolit protokolování dotazů MySQL/MariaDB

  2. Zakažte přihlášení pomocí účtu root

  3. Linux – rozumíte přihlašování v Linuxu?

  1. Ssh – protokolování pokusů o přístup Ssh?

  2. Co znamenají události perf cache?

  3. Haproxy se nezaznamenává pomocí rsyslog

  1. Chybí události inotify (v adresáři .git)

  2. Ověřte konfiguraci dnsmasq

  3. Mohu přihlásit aktivitu vi?