Сканирование событий открытия/закрытия ноутбука не работает

ВАРИАНТ 1 (RHEL,DEBIAN)

Вот две дополнительные возможности, доступные для RHEL, основанные на инструментах inotify -(, которые не установлены по умолчанию, насколько я помню ). Канал /dev/nullпредназначен для предотвращения стандартного вывода на терминал,потому что -qq не был таким тихим, как описано.

Для дистрибутивов DEBIAN измените/var/log/secureна/var/log/auth.logи, очевидно, sudo, но фактически войдите в систему как root-, чтобы настроить этот тип системы -широкий мониторинг -на самом деле может быть одним из подходящих вариантов использования root.

1.Отслеживание /var/log/secureизменений фона:

    while inotifywait -qq -e modify /var/log/secure; 
       do 
       if tail -n1 /var/log/secure | grep useradd > /dev/null; 
         then 
           tail -n1 /var/log/secure | grep useradd >> ~/useradd.log; 

           echo "Here you can also add conditional action if user already exists";    

       fi; 
    done &

Мне очень нравится именно этот вариант, потому что он позволяет разделять различные части (useradd, pam и т. д. )журналов auth.logили secureна отдельно отслеживаемые вложенные журналы.

2.Мониторинг использования самой команды useradd

while inotifywait -qq /usr/sbin/useradd; 
   do  
    if tail -n1 /var/log/secure | grep useradd > /dev/null; 
        then  tail -n1 /var/log/secure | grep useradd >> ~/useradd.log ;          
    fi; 
  done  &

Любая опция, упакованная в виде скрипта и выполняемая с помощью nohup [script] > /dev/null, будет непрерывно отслеживать в фоновом режиме, даже когда терминал закрывается.

ВАРИАНТ 2 (ДЕБИАН)

Или даже лучшим вариантом в вашем случае может быть использование вместо этого adduserи создание /usr/local/sbin/adduser.local, которое будет выполнено после завершения команды adduser

если вы создаете adduser.localследующим образом:

#!/bin/bash

# arguments passed in the following order: username uid gid home-directory
    #adjust log path accordingly

echo "ADDUSER: $1 $2 $3 $4 $5" >> ~/adduser.log

Это должно дополнять файл журнала всякий раз, когда создается новый пользователь

ВАРИАНТ 3 (ВСЕ)

Да, вывод useraddфактически добавляется к/var/log/auth.log

проверил это как пример (sudo перед командами, очевидно)

$useradd dude
$cat /var/log/auth.log | tail -2

Aug 23 19:01:25 useradd[32230]: new group: name=dude, GID=1012
Aug 23 19:01:25 useradd[32230]: new user: name=dude, UID=1011, GID=1012, home=/home/dude, shell=/bin/sh

$useradd dude
$cat /var/log/auth.log | tail -1 

Aug 23 19:04:16 useradd[32328]: failed adding user 'dude', data deleted

В общем, я считаю, что вы ищете:

$ sudo grep -a "useradd" /var/log/auth.log

Это даст вам все записи журнала с именами и временем добавления пользователей в систему.

0
05.10.2021, 10:57
1 ответ

В качестве обходного пути я создал скрипт на основе комментария @peregrino69 :, он считывает состояние LID из /proc/acpi/button/lid/LID0/stateкаждую секунду и выполняет функцию обратного вызова, если состояние изменилось:

#!/bin/bash

_state="open"

function on_state_open {
  # run commands on open
}

function on_state_close {
  # run commands on close
}

function on_state_change {
  local update="$1"
  local change=false
  if [[ "${_state}" != "$update" ]]; then
    change=true
  fi
  _state="$update"
  if $change; then
    case "${_state}" in
      "open")
        on_state_open
        ;;
      "closed")
        on_state_close
        ;;
    esac
  fi
}

while true; do
  snapshot=$(cat /proc/acpi/button/lid/LID0/state | awk -d' ' '{print $2}')
  on_state_change "$snapshot"
  sleep 1
done
0
06.10.2021, 08:27

Теги

Похожие вопросы