Я хотел бы взять и сохранить картинку от веб-камеры, каждый раз, когда кто-то пытается войти в систему в систему и сбои. Я знаю, что могу сделать это с:
mplayer -vo png -frames 1 tv://
Вопрос: Как я могу инициировать эту команду, когда кому-то не удается войти в w/LightDM?
Один путь состоит в том, чтобы использовать Журнал Авторизации.
Журнал авторизации
Журнал Авторизации отслеживает использование систем авторизации, механизмов для авторизации пользователей, которые запрашивают пароли пользователя, такие как система Сменного модуля аутентификации (PAM), команда sudo, удаленные входы в систему sshd и так далее. В Файле журнала Авторизации можно получить доступ
/var/log/auth.log
. Этот журнал полезен для приобретения знаний о пользовательских логинах и использовании команды sudo.
На неудавшейся попытке входа в систему запись будет добавлена к /var/log/auth.log
файл и последняя строка будут содержать что-то как:
pam_unix(gdm-password:auth): authentication failure;
Если Вы постоянно контролируете файл для модификации и проверки, если последняя строка содержит отказ ключевого слова с, например, grep failure
затем Вы знаете, что неудавшаяся попытка входа в систему только что произошла, и можно выполнить любую команду, которую Вы хотите на основе этого действия.
Можно контролировать последнюю строку /var/log/auth.log
файл со сценарием как это:
#!/bin/bash
while true
do
sleep 1
if (( $(tail -1 /var/log/auth.log | grep failure | wc -l) == 1))
then
echo "failed login"
# Your command here
fi
done
Или еще лучше, можно установить inotify-tools
и используйте inotifywait
контролировать файл вместо sleep 1
и сценарий будет похож на это:
#!/bin/bash
while inotifywait -q -e modify /var/log/auth.log >/dev/null
do
if (( $(tail -1 /var/log/auth.log | grep failure | wc -l) == 1))
then
echo "failed login"
# Your command here
fi
done
inotify-tools
может быть установлен со следующей командой:
sudo apt install inotify-tools
Для выполнения этого решения как системной службы выполните эти шаги:
Скопируйте и вставьте код сценария выше (без echo "failed login"
поскольку я добавил эту строку для отладки только целей) в файл в Вашем корневом каталоге, и назовите его TakePicture.sh
и сохраните файл.
Сделайте исполняемый файл файла сценария оболочки путем выполнения следующей команды в терминале:
chmod +x ~/TakePicture.sh
sudo nano /etc/systemd/system/TakePicture.service
USERNAME
с Вашим именем пользователя и сохраняют, оно путем нажатия Ctrl + X затем нажимает, Y затем нажимают Enter:[Unit]
Description=Take Picture
[Service]
Type=oneshot
ExecStart=/home/USERNAME/TakePicture.sh
[Install]
WantedBy=multi-user.target
sudo systemctl start TakePicture
sudo systemctl enable TakePicture
Всего наилучшего