Блог им. sammy → Удаленное слежение за компьютером под Linux
Конечно, задумал я это все от нечего делать, но, может быть, вы найдете применение данному скрипту.
1. В консоли напишем
И подвигаем мышью. Если появляются символы, то мы на правильном пути.
2.Теперь напишем скрипт на bash, который, собственно, будет выводить сообщение при движении мыши. Выглядит это так:
Назовем скрипт mouse.sh, сохраним в домашнюю папку и сделаем его исполняемым. Пробуем запустить его от root’а:
Увидим, что при движении мыши выскакивает сообщение “Кто-то дотронулся до вашей мышки!!!!!!!” Но нам ведь мало этого, и мы пойдем дальше. Сделаем так, чтобы сообщения о прикосновении к мыше шли на ваш jabber аккаунт.
3.Установим “sendxmpp” через Synaptic или apt-get или как-нибудь еще
4.Отредактируем файл .sendxmpprc, который находится в домашней директории. Файл должен содержать jid, с которого будут идти сообщения и пароль. Все это должно выглядить так: xxxxxx@jabber.ru пароль.
5.Вернемся к скрипту mouse.sh. Допишем к третьей строчке кода “| sendxmpp xxxxxxx@jabber.ru”, где xxxxxxx@jabber.ru jid, на который будут приходить уведомления. Итого, должен получиться такой скрипт:
Сохраняем и закрываем. Запускаем скрипт все той же командой, что и раньше (sudo ./mouse.sh), двигаем мышкой и ждем сообщения!
Вот, как приложение, видео к статье
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
PS: чуть лучше обойтись без cat:
while read i; [...]; done < /dev/input/mouse0
а заметно лучше — сделать пороговый фильтр (если N пусть байтиков, а не событий, накопилось за время D — сбрасываем счётчик; read умеет таймаут).
while read; do echo «Кто-то прикоснулся к твоей мышке!!!!»; done < /dev/input/mouse0
«с фильтром»:
#!/bin/sh
#
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, см. тж.
«[ "$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
только наверное лучше вводную часть проговаривать (я про скринкаст), а то вы наверное торопились и у вас там есть смешные орфографические ошибки. ))