Главная Файлы Форум Галерея Гостевая книга Обратная связь Карта сайта Поиск
 

 

Моё место работы

СитиСервис
  • Заправка и ремонт лазерных картриджей
  • Ремонт любых принтеров и копиров
  • Оригинальные и совместимые картриджи
  • Доставка бесплатно (от 2-х картриджей)
  • Накопительная система расчётов для корпоративных клиентов
Телефон
+7 (4722) 373-983
8-980-326-01-23
Адрес E-mail
mybelpost@gmail.com

Привет, Гость

Войти
Идентификация
Я забыл свой пароль
Регистрация

Разделы -> Статьи -> Linux - разное -> Как сделать в Linux ...

Как узнать в Linux, кто включил компьютер?

   На домашнем компьютере (ОС Debian GNU/Linux) несколько учётных записей - моя, жены, двух дочерей (у каждой своя учётка).
Сейчас лето и дети находятся дома. Каникулы штука хорошая, но делу время, а потехе час, а потому доступ к компьютеру для дочек  я ограничил по времени. Однако они его включают пока взрослых нет дома - о том мне логи говорят. И вот, чтобы у меня были неоспоримые доказательсва внепланового запуска ПК я решил использовать WEB-камеру и делать снимки при логине пользователя в систему.

Что понадобится?


WEB-камера и установленное приложение ffmpeg.

Как сделать фотографию запустившего компьютер?


1) Запускаем терминал и получаем права root.
2) Создаём скрытый каталог для хранения изображений в каталоге пользователя.
mkdir ~/.login_photo

Раздаём права:
chmod 777 ~/.login_photo

3) Правим файл .profile у пользователя, за которым "следим".
Пробиваем в консоли вот такую команду (одной строкой):

echo "ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 -r 1 -vcodec png ~/.login_photo/`date +%d.%m.%y_%H.%M.%S`.png -b 2000k -t 5;" >> ~/.profile

Только не забудьте заменить /dev/video0 на путь к своей WEB-камере - это может быть /dev/video1 или дальше по порядку.

Теперь при каждом логине пользователя в каталоге /home/учётная_запись/.login_photo будет сохранён снимок в имени, которого будет присутствовать дата и время.


Второй вариант снимка заходящего (используем PAM)


   Чтобы камера снимала любые попытки авторизации, нужно переходить на уроверь pam. Т.е. фото будет сделано сразу после ввода имени пользователя в консоли или выбора пользователя в GDM/KDM или, что там ещё будет установлено.

Для реализации такой задумки нужно создать bash-скрипт со строкой запускающей ffmpeg и положить его в /usr/sbin с любым свободным именем.
Для примера делам так (от root):

touch /usr/sbin/auth-cam
mkdir /var/log/auth-cam

echo "#! /bin/bash
cd /var/log/pics
/usr/bin/ffmpeg -an -f video4linux2 -s 320x240 -i /dev/video0 -r 1 -vcodec png /var/log/auth-cam/`date +%d.%m.%y_%H.%M.%S`.png -b 2000k -t 5" > /usr/sbin/auth-cam

Раздаём права:

chmod 755 /usr/sbin/auth-cam
chmod 755 /var/log/auth-cam

И последнее, в начало файла /etc/pam.d/common-auth вписываем запуск нашего скрипта. Можно вот так:

sed -i -e '1 s/^/auth optional pam_exec.so seteuid \/usr\/sbin\/auth-cam\n/;' /etc/pam.d/common-auth

Всё! Покидаем режим root.

Теперь при любой попытке авторизации будет сделано фото и сохранено в каталоге /var/log/auth-cam

ЗЫ: а чтобы было понятно от какого пользователя заходили и к кому, то можно поиграться с именем формируемого снимка, включив в него переменные $PAM_USER, $PAM_SERVICE, $PAM_RHOST, $PAM_RUSER

Ещё вариант с применением Python и библиотеки OpenCV


Сам python-скрипт (Python-2.7):
#!/usr/bin/env python
# -*- coding: utf8 -*-

# Для работы должны быть установлены пакеты python 2.7, и python-opencv
# Скрипт делает снимок с любой доступной веб-камеры
# Сценарию можно передать путь для сохранения файла
# Без указания пути файл будтет сохранён в текущий каталог
# Пробелы в пути сохранения должны быть экранированы знаком "\"
# или путь должен быть взят в кавычки.

import sys # чтобы принять аргументы
import cv # работа с камерой
from time import strftime # для получения времени и даты

if len (sys.argv) > 1: # проверяем введён ли аргумент
    dat = sys.argv[1]+"/"+strftime("%Y-%m-%d_%H-%M-%S")+".jpg" # если да, то включем его в путь сохранения
else:
    dat = strftime("%Y-%m-%d_%H-%M-%S")+".jpg" # если нет, то только имя файла

capture = cv.CaptureFromCAM(-1) # -1 - захват с любой доступной камеры
frame = cv.QueryFrame(capture)
cv.SaveImage(dat, frame)
После создания и сохранения скрипта нужно отредактировать файл ~/.profile
Дописав в самый низ вот такую строку:

/путь/к_сзданному/Python-скрипту "/путь_для/сохранения/снимка"

Автостарт только для одного пользователя и только для графической среды


Проверено в DE MATE, GNOME-2.

Открываем терминал от имени пользователя, у которого будем делать снимок.
Создаём каталог для хранения "кнопок" автостарта.

mkdir -p $HOME/.config/autostart

Создаём файл-кнопку с прописанным приложением для старта
скомандовав в консоли вот так:

cat > $HOME/.config/autostart/photo.desktop<<EOF
[Desktop Entry]
Type=Application
Exec=/путь/к_приложению параметр(если нужен)
Hidden=false
X-MATE-Autostart-enabled=true
Name[ru_RU]=Снимок входящего
Name=
Comment[ru_RU]=
Comment=
EOF


Ссылки по теме:


Опубликовано: Константин, Автор/источник: Сакрюкин К.В. 29 Июнь 2012 12:13:08

Комментировать

Вы не залогинены! Регистрация

Афоризмы, мысли

… если пользователи будут жертвовать свободой в пользу сиюминутного удобства — свобода в будущем может перестать существовать.

/Столлман Ричард Мэттью/

Счётчик

Сейчас на сайте - 1 (0 зарег.)
Всего хитов1157 
Сегодня хитов1157 
Сегодня хостов291 

Откуда гости наши?

 
Powered by ReloadCMS 1.5.0.
© 2004-2012 ReloadCMS Team
RSS AggregationPHP powered
Генерация страницы: 0.3
  Яндекс.Метрика
    Сакрюкин К.В.   Яндекс цитирования    
 
Здесь всё можно копировать и цитировать, но рабочая ссылка на мой сайт обязательна!