Вот две дополнительные возможности, доступные для 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
, будет непрерывно отслеживать в фоновом режиме, даже когда терминал закрывается.
Или даже лучшим вариантом в вашем случае может быть использование вместо этого 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
Это должно дополнять файл журнала всякий раз, когда создается новый пользователь
Да, вывод 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
Это даст вам все записи журнала с именами и временем добавления пользователей в систему.
В качестве обходного пути я создал скрипт на основе комментария @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