Документ создан: 05.10.2010

Контроль времени работы за компьютером

Начался учебный год и пришли проблемы невыполненных уроков. Это повлекло за собой необходимость контроля времени, проведённого ребёнком за компьютером. Если под Windows есть приложение TimeBoss, которое гибко настраивается и позволяет оградить чадо от чрезмерного нахождения за компьютером, то под linux я ничего подобного не нашёл. Не нашёл и ладно – сам написал. Нет, C и C++ я не владею, но есть опыт написания скриптов под bash.

Примечание. Писалось под свои нужды, а не как средство "массового применения".;-) Соответственно, не всё может вас устроить, либо не устроить вовсе.

Описание и файлы.

Итак, что мы имеем:

  • Список пользователей системы с описанием дневного лимита. Я так же учёл и выходные (не праздничные, а только выходные), в которые можно немного дольше посидеть. limits (После выкачивания, переименуйте файл в "limits")
  • Код, который учитывает общее количество времени проведённого в системе (работал, не работал - твои проблемы, был в системе. Определяется по самой ранней дате в выводе команды "who"). timecheck.sh
  • Дополнительный контроль времени в случае, когда компьютер был выключен при невыбранном лимите, а потом снова запущен.
  • Что-то, что будет запускать основной код. timecheck (После выкачивания, переименуйте файл в "timecheck")
  • Дополнительная возможность продлить время работы на указанное время. prolong.sh

Настройка и запуск.

Теперь, что нужно сделать, чтобы это заработало:

  1. Доставить, при отсутствии, пакет:
    для ubuntu
    sudo apt-get install libnotify-bin

    для RedHat-based (у меня – CentOS)

    yum install libnotify

    Требуется "/usr/bin/notify-send"

  2. Создать каталог (например, "/usr/local/timecheck/"), куда поместить все файлы описанные в предыдущем разделе. Список должен выглядеть так:
    limits
    prolong.sh
    timecheck
    timecheck.sh
  3. Откорректировать список под себя (одна строка – один пользователь):
    ltest   2:30    0:05

    Где:
    ltest (первое значение) – имя пользователя,
    2:30 (второе значение) – лимит времени работы,
    0:05 (третье значение) – дополнительное время работы в выходные дни.

  4. Откорректировать timecheck, а именно: исправить значение переменной "DIR=/path/to/scripts", например, на "DIR=/usr/local/timecheck".
  5. Скопировать или переместить timecheck в /etc/init.d/ и выполнить:
    для ubuntu
    update-rc.d timecheck defaults

    для RedHat-based

    chkconfig --add timecheck
  6. Перегрузить компьютер или запустить скрипт вручную:
    /etc/init.d/timecheck start

Файлы, создаваемые при работе.

Во время работы будут созданы файлы:

  • /var/lock/timecheck.lock – файл блокировки, необходимый дабы исключить запуск второго экземпляра скрипта. После останова скрипта через /etc/init.d/timecheck, удаляется. В противном случае, нужно самому контролировать его наличие.
  • /var/run/${user}.remain – файлы, содержащие оставшееся время работы в секундах. Нужны для того, чтобы при повторном старте компьютера учитывать оставшийся лимит, а не начинать отсчёт времени заново. "${user}" – имя пользователя из "limits". Если дата последнего обращения к файлу отличается от текущей, подразумевается, что наступили новые сутки и файл пересоздаётся, отсчёт времени начинается по новой. Если пользователя из "limits" нет в системе (не вошёл он ещё), файл не создаётся (не пересоздаётся).

Дополнительные возможности.

Если возникла необходимость добавить время работы, можно это сделать не корректируя "limits". Для этого нужно воспользоваться дополнительным скриптом "prolong.sh":

prolong.sh ltest 0:30

Продлеваем разрешённое на сегодняшний (!) день время работы пользователю ltest "ну, ещё на полчаса!"

Вроде, всё. Если возникнут вопросы, адрес на Главной.

 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate