1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Мониторинг времени простоя компьютера

monitoring-vremeni-prostoya-kompyutera

Чтобы реализовать мониторинг времени простоя компьютера, нужно учитывать тот факт, что пользователь обычно работает с мышкой, поэтому будем анализировать ее активность.

Если мышь была не активной в течение N минут, сделаем вывод, что пользователь в настоящее время не работает с ПК. Всю статистику будем отправлять в Телеграмм.
Обращу Ваше внимание, операционная система семейства Linux, писать весь код будем в bash.
В консоли напишем:
sudo cat /dev/input/mouse0
и подвигаем мышкой — должны на экране терминала появиться символы.
Создадим папку Monitoring
sudo mkdir /var/monitoring
создадим файл input.sh
sudo nano /var/monitoring/input.sh
вставим текст:

#/bin/bash
#####Время от которого начинается отсчет простоя (в секундах)#######
inactive=10

###TELEGRAM####
token=
chat_id=
text="Пользователь начал работу."

########НЕ ТРОГАТЬ!!!#######
timeinactive=0
t=0
test=
echo $(date +%s) > /var/monitoring/start.txt
###Сразу после запуска ПК, оповещение в телеграм не сработает,
###так как еще не установлено соединение с Интернет
sleep 60
url="https://api.telegram.org/bot$token/sendMessage?chat_id=$chat_id&text=$text"
curl -X POST "$url" 2 > /dev/null
while :; do
####Параметр -n задает чуствительность движение мыши
####Параметр -st задает время чтение файла (1 секунда)
####Если убрать - цыкл while не начнет следующую итерацию
read -n 5 -st 1 i</dev/input/mouse0
if [ "$i" = "$test" ]; then
t=$[$t+1]
if (( "$t" > "$inactive" )); then
timeinactive=$[$timeinactive+1]
echo "$timeinactive">/var/monitoring/timeinactive.txt
fi
else
t=0
fi
done &

Создадим файл input_stop.sh:
sudo nano /var/monitoring/input_stop.sh
вставим текст:

#!/bin/bash
read timeinactive < /var/monitoring/timeinactive.txt
read start < /var/monitoring/start.txt
end=$(date +%s)
timeall=$(($end-$start))

sall=$[$timeall%60]
mall=$[$timeall/60%60]
hall=$[$timeall/3600]
if (( "$sall" < 10 )); then sall=0$sall
fi
if (( "$mall" < 10 )); then mall=0$mall
fi
if (( "$hall" < 10 )); then hall=0$hall
fi

sinactive=$[$timeinactive%60]
minactive=$[$timeinactive/60%60]
hinactive=$[$timeinactive/3600]
if (( "$sinactive" < 10 )); then sinactive=0$sinactive
fi
if (( "$minactive" < 10 )); then minactive=0$minactive
fi
if (( "$hinactive" < 10 )); then hinactive=0$hinactive
fi

procent=$[$[100*$timeinactive]/$timeall]
procent=$[100-$procent]

###TELEGRAM####
token=
chat_id=
text="Пользователь закончил работу!Общее время работы: $hall:$mall:$sall. Время простоя: $hinactive:$minactive:$sinactive. Эффективность работы: $procent%."

url="https://api.telegram.org/bot$token/sendMessage?chat_id=$chat_id&text=$text"
curl -X POST "$url" 2 > /dev/null
echo "0" > /var/monitoring/timeinactive.txt

Создадим текстовые файлы для хранения информации:
sudo nano /var/monitoring/timeinactive.txt
sudo nano /var/monitoring/start.txt
Задаем права на исполнение скриптов:
sudo chmod + x /var/monitoring/input.sh
sudo chmod + x /var/monitoring/input_stop.sh
Задаем права на файлы и папки:
sudo find / var / monitoring / -type d -exec chmod 777 {};
sudo find / var / monitoring / -type f -exec chmod 777 {};
Запускаем на выполнение файлы, и проверяем их на работоспособность:
sudo /var/monitoring/input.sh
ждем 1 мин, после чего должно прийти сообщение в Телеграмм.
sudo /var/monitoring/input_stop.sh
Проверяем сообщение в телеграмме.
Для автоматического запуска скриптов, используем systemd.service.
Сервис в операционных системах семейства Unix — программа выполняется в фоновом режиме и не имеет окон или других способов связи с пользователем.
Создадим файл monitoring.service
sudo nano /etc/systemd/system/monitoring.service
вставляем текст:

[Unit]
Description=Monitoring config
After=systemd-user-sessions.service
[Service]
ExecStart=/bin/bash /var/monitoring/input.sh
ExecStop=/bin/bash /var/monitoring/input_stop.sh
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target reboot.target poweroff.target

Даем права на файл:
sudo chmod + x /etc/systemd/system/monitoring.service
sudo chmod 644 /etc/systemd/system/monitoring.service
Перезагружаем systemd для поиска новых или измененных юнитов:
sudo systemctl daemon-reload
Включаем юнит в автозапуск при загрузке системы:
sudo systemctl enable monitoring.service
Чтобы проверить без перезагрузки, можно запустить и остановить юнит:
sudo service monitoring start
sudo service monitoring stop
Перезапускаем систему:
sudo reboot
Возможно Вам будет интересна еще одна моя статья: Создание Wi-FI точки доступа Raspberry PI

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.