- PVSM.RU - https://www.pvsm.ru -
Часто ли уходя за очередной чашечкой кофе или выйдя из кабинета/офиса совершить личный звонок, ты ловишь себя на мысли что забыл заблокировать экран своего компьютера? А на компьютере в это время осталась открытая переписка в Skype/почте или еще хуже — сессия root'а в консоли? В результате ты стараешься вернуться к своему компьютеру как можно быстрее, чтобы добрые коллеги не успели поставить фоном рабочего стола обои с Черным Властелином [1].
В данной статье приведу пример решения этой проблемы с блокировкой экрана, которое поможет закрыть доступ к рабочему столу в тот момент когда ты отойдешь от компьютера.
Опишу вкратце предлагаемое решение, для понимания того что мы будем сейчас делать. Сделаем так что операционная система будет сама, средствами Bluetooth, проверять как далеко находится пользователь, и в случае «недосягаемости» будет автоматически блокировать экран. Процесс снятия блокировки останется на совести пользователя, и будет заключаться в воде пароля, который используется в его учетной записи. Автоматически снимать блокировку довольно рискованная затея поэтому данный сценарий рассматривать не будем. По уровню сложности данная статья ориентирована на продвинутых пользователей Linux, т.к. некоторые этапы настройки будут описаны без лишних деталей, полагаясь на очевидность, чтобы не уходить в сторону от основной освещаемой темы.
Для начала необходимо убедиться что наш компьютер и мобильный телефон поддерживают технологию Bluetooth. Если с мобильным телефон проблем не должно возникнуть, т.к. большинство современных аппаратов имеют поддержку «синего зуба», то с компьютером вполне могут. Не буду подробно рассказывать как настроить Bluetooth в разных дистрибутивах Linux, а просто опишу основные этапы настройки поддержки оного, при условии что аппаратная часть включает в себя необходимые компоненты, на примере Gentoo.
~ $ lsusb | grep -i bluetooth
Bus 001 Device 003: ID 0a5c:217f Broadcom Corp. Bluetooth Controller
Kernel Configuration --->
Bluetooth subsystem support --->
Bluetooth device drivers --->
<*> HCI USB driver
* net-wireless/bluez
Latest version available: 4.101-r5
Latest version installed: [ Not Installed ]
Size of files: 866 kB
Homepage: http://www.bluez.org/
Description: Bluetooth Tools and System Daemons for Linux
License: GPL-2 LGPL-2.1
~ # /etc/init.d/bluetooth start
~ # rc-update add bluetooth default
~ # hcitool dev
Devices:
hci0 CC:52:AF:E3:FB:67
~ # hciconfig list
hci0: Type: BR/EDR Bus: USB
BD Address: CC:52:AF:E3:FB:67 ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN
...
На этом подготовка завершена, переходим к следующему этапу.
В данном разделе будет вся суть решения, а именно мы настроим сопряжение между мобильным телефоном и компьютером. После чего в операционной системе подготовим скрипт проверки доступности телефона по каналу Bluetooth, который будет вызываться каждую минуту средствами демона-планировщика Cron. Приступим.
~ # hcitool scan
Scanning ...
00:AA:70:31:9A:19 LG-E400
~ # simple-agent hci0 00:AA:70:31:9A:19
RequestConfirmation (/org/bluez/3522/hci0/dev_00_AA_70_31_9A_19, 724215)
Confirm passkey (yes/no): yes
Release
New device (/org/bluez/3522/hci0/dev_00_AA_70_31_9A_19)
~ # bluez-test-device trusted 00:AA:70:31:9A:19 yes
~ # l2ping -c 10 00:AA:70:31:9A:19
~ # if ! /usr/bin/l2ping -c 1 <%ADDR%> ; then su <%USERNAME%> -c '<%SCREENLOCKER%>' ; fi
В моем случае:
<%ADDR%> = 00:AA:70:31:9A:19
<%USERNAME%> = не root-пользователь, под которым запускаются X и вся остальная основная работа в системе
<%SCREENLOCKER%> = я использую пакет gnome-extra/gnome-screensaver из окружения Gnome без всей остальной среды, поэтому команда блокировки экрана выглядит так — gnome-screensaver-command --lock
~ # crontab -l
#minute (0-59),
#| hour (0-23),
#| | day of the month (1-31),
#| | | month of the year (1-12),
#| | | | day of the week (0-6 with 0=Sunday).
#| | | | | commands
* * * * * export DISPLAY=:0 && if ! /usr/bin/l2ping -c 1 <%ADDR%> >/dev/null 2>/dev/null ; then su <%USERNAME%> -c '<%SCREENLOCKER%>' ; fi
Если пугают такие правила в crontab, то можно проверку вынести в отдельный скрипт в каталоге /usr/local/sbin, c более хитрыми проверками, который потом указать в правиле crontab.
На этом настройка и проверка завершены.
Мы получили инструмент, который будет следить за нашим мобильным телефоном и в случае его удаления от компьютера заблокирует экран. В реальных условиях это расстояние не больше 10-20 метров и bluetooth на телефоне должен работать стабильно. Ежедневный ресурс батарейки мобильного телефона несколько уменьшиться, т.к. мы используем короткие подключения по 2-3 секунды.
Автор: phs
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/27400
Ссылки в тексте:
[1] обои с Черным Властелином: http://habrastorage.org/storage2/0d2/9aa/8b3/0d29aa8b3dae294d2e9bcacfdcb6ba95.jpg
[2] Источник: http://habrahabr.ru/post/169819/
Нажмите здесь для печати.