Блог им. sammyУдаленное слежение за компьютером под Linux

Конечно, задумал я это все от нечего делать, но, может быть, вы найдете применение данному скрипту.
1. В консоли напишем
sudo cat /dev/input/mouse0


И подвигаем мышью. Если появляются символы, то мы на правильном пути.

2.Теперь напишем скрипт на bash, который, собственно, будет выводить сообщение при движении мыши. Выглядит это так:
#!/bin/bash


cat /dev/input/mouse0 | while read i;
do echo "Кто-то прикоснулся к твоей мышке!!!!"
done;


Назовем скрипт mouse.sh, сохраним в домашнюю папку и сделаем его исполняемым. Пробуем запустить его от root’а:
sudo ./mouse.sh


Увидим, что при движении мыши выскакивает сообщение “Кто-то дотронулся до вашей мышки!!!!!!!” Но нам ведь мало этого, и мы пойдем дальше. Сделаем так, чтобы сообщения о прикосновении к мыше шли на ваш jabber аккаунт.

3.Установим “sendxmpp” через Synaptic или apt-get или как-нибудь еще

4.Отредактируем файл .sendxmpprc, который находится в домашней директории. Файл должен содержать jid, с которого будут идти сообщения и пароль. Все это должно выглядить так: xxxxxx@jabber.ru пароль.

5.Вернемся к скрипту mouse.sh. Допишем к третьей строчке кода “| sendxmpp xxxxxxx@jabber.ru”, где xxxxxxx@jabber.ru jid, на который будут приходить уведомления. Итого, должен получиться такой скрипт:
#!/bin/bash

cat /dev/input/mouse0 | while read i;

do echo "Кто-то прикоснулся к твоей мышке!!!!" | sendxmpp xxxxxxxx@jabber.ru
done;


Сохраняем и закрываем. Запускаем скрипт все той же командой, что и раньше (sudo ./mouse.sh), двигаем мышкой и ждем сообщения!

Вот, как приложение, видео к статье

  • +5
  • sammy
  • 09 января 2011, 14:28

Комментарии (18)

На ноутбуках, кстати, еще тачпад (mouse1) неплохо бы контролировать, уж до него всегда нечаянно дотрагиваются :)
На ноутбуках я ни разу не пробовал запускать такое
это чуть сложнее, мне кажется
Такое только после новогодних праздников могло в голову прийти! ;) *шутка*
Вообще, этой задумке около 3х месяцев…
Да не, идея интересная (я даже плюсанул), только я бы не стал называть так пост, всётки я не вижу этому серьёзного применения.
Дак и я не вижу, но не знаю как правильнее назвать
ахах, ну вы отожгли. использовать vnc и ssh не кошерно уже? :)
Это дял того, чтобы зафиксировать сам факт использования компа. К примеру, оставил работающий комп и наказал домашним не притрагиваться. Причем здесь VNC/SSH?
При том, что хлопнет форточка или входная дверь — мышка подпрыгнет и пульнёт событие => false alarm.

PS: чуть лучше обойтись без cat:
while read i; [...]; done < /dev/input/mouse0
а заметно лучше — сделать пороговый фильтр (если N пусть байтиков, а не событий, накопилось за время D — сбрасываем счётчик; read умеет таймаут).
Если не сложно- можно пример кода?
«без cat»:
while read; do echo «Кто-то прикоснулся к твоей мышке!!!!»; done < /dev/input/mouse0

«с фильтром»:
#!/bin/sh
# open-life.org/blog/1484.html#comment11388
OLD=
while :; do
read -t 1 -n 12 data
[ "$data" = "$OLD" ] && continue
OLD="$data"
echo "$data" | wc -c
done < /dev/input/mouse0

«лениво»: xxd /dev/input/mice
пояснения:

«OLD=» — см. получающееся при ленивом варианте или если заремарить строчку с continue: приходится сохранять последнее вычитанное ранее состояние

«while :; do» — «:» является shell builtin, эквивалентным /bin/true => бесконечный цикл в пределах разумного

«read -t 1 -n 12 data» — таймаут секунда, порог до четырёх трёхбайтных комплектов данных (протокол imps2, см. тж. kerneltrap.org/node/6786 — гуглится по /dev/input/mice data)

«[ "$data" = "$OLD" ] && continue» — если прочтено то же, что и в предыдущий раз, не обращать внимания[*]

«OLD="$data"» — обновить «предыдущий раз», и не забываем про аккуратный квотинг

«echo "$data" | wc -c» — показать, сколько байтиков насыпалось

«done < /dev/input/mouse0» — завершаем цикл и всей этой конструкции в качестве stdin подсовываем желаемый файл

[*] для тестирования можно запустить с правами, достаточными для чтения файла устройства:
while :; do read -t 1 -n 3 i < /dev/input/mice; echo "$i" | hexdump -C; done
gvy ясно- спасибо
молодец!!! ))
только наверное лучше вводную часть проговаривать (я про скринкаст), а то вы наверное торопились и у вас там есть смешные орфографические ошибки. ))
вернее опечатки ))
тогда микрофона не было)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.