Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Программа для контроля прихода сотрудников на работу Ubuntu Linux  (Прочитано 18515 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн amdlintuxos

  • Любитель
  • *
  • Сообщений: 86
    • Просмотр профиля
если есть физический доступ к системнику то рут и не нужен. Что мешает подправить систему с Live CD, перевести часи в биосе (или вытащить батарейку, если запаролен), etc?
в норм конторах время синхронизируют по интернет

« Последнее редактирование: 24 Июля 2011, 16:23:56 от amdlintuxos »
что не збудется - позабудется

Оффлайн bologa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
если есть физический доступ к системнику то рут и не нужен. Что мешает подправить систему с Live CD, перевести часи в биосе (или вытащить батарейку, если запаролен), etc?
в норм конторах время синхронизируют по интернет




Кроме того никто не мешает настроить мониторинг на сервере, который будет пингать рабочие компы раз в 5 минут.

Пользователь решил продолжить мысль 24 Июля 2011, 18:32:38:
Заметил особенность. Т.к. мы вводим сообщение на русском, то потом нужно переключаться на английскую раскладку для того, чтобы нажать Ctrl+s, иначе не срабатывает, нужно добавить проверку на нажание Ctrl+ы

maximand
Спасибо за развёрнутый ответ!
:) Прикольная схема у вас, как по мне
« Последнее редактирование: 24 Июля 2011, 18:34:48 от bologa »

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Вчера в магазине видел сетевую розетку с таймером: 240руб.
 :)

Оффлайн bologa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
Вчера в магазине видел сетевую розетку с таймером: 240руб.
 :)

В китайских инетмагазинах их просто навалом.

Оффлайн vasiliyVV

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
bologa извини, был в отпуске, не до этого было.
Чтобы срабатывало нажатие и на ctrl+ы нужно изменить первую строку в функции def wakeup(widget, event), привести к такому виду:
if event.state & gtk.gdk.CONTROL_MASK and event.keyval == 115 or event.state & gtk.gdk.CONTROL_MASK and event.keyval == 1753: #при нажатии Ctrl+S(115), теперь и +Ы(1753)По поводу отправки на мыло -- сложнее, т.к. мы запускаем скрипт до авторизации пользователя.
Есть вариант отправлять на мыло после, но здесь придётся плодить еще скрипт.
Также можно складывать на сервер в отдельную директорию, а там всё в ваших руках.
Напишите какой вариант нужен или свой, я как будет минутка попробую помочь.

Оффлайн retimer

  • Новичок
  • *
  • Сообщений: 31
  • Ubuntism.ru
    • Просмотр профиля
    • Убунтизм для пользователя
А что мешает скрипту законнектиться к smtp-серверу (наверняка, в этой же сети) и отправить письмо от имени специального пользователя "stukachok" на нужный адрес?

Оффлайн bologa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
bologa извини, был в отпуске, не до этого было.
Чтобы срабатывало нажатие и на ctrl+ы нужно изменить первую строку в функции def wakeup(widget, event), привести к такому виду:
if event.state & gtk.gdk.CONTROL_MASK and event.keyval == 115 or event.state & gtk.gdk.CONTROL_MASK and event.keyval == 1753: #при нажатии Ctrl+S(115), теперь и +Ы(1753)По поводу отправки на мыло -- сложнее, т.к. мы запускаем скрипт до авторизации пользователя.
Есть вариант отправлять на мыло после, но здесь придётся плодить еще скрипт.
Также можно складывать на сервер в отдельную директорию, а там всё в ваших руках.
Напишите какой вариант нужен или свой, я как будет минутка попробую помочь.

Ещё раз большое спасибо за программу! На счёт котнрал+Ы - изменю как ты сказал.

Думаю, что лучше всего отправлять на мыло, в плане удобства для руководителей. Можно всем начальникам сразу отправлять, например.
Отправку почты действительно можно попробовать организовать через внешний smtp, платный или корпоративный.
Видел вот такую утилиту:

msmtp http://msmtp.sourceforge.net/

msmtp is an SMTP client.

In the default mode, it transmits a mail to an SMTP server (for example at a free mail provider) which takes care of further delivery.
To use this program with your mail user agent (MUA), create a configuration file with your mail account(s) and tell your MUA to call msmtp instead of /usr/sbin/sendmail.

Судя по описанию в настройках попроще сендмейла будет.

Оффлайн vasiliyVV

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Хорошо, smtp. Используя стандартную библиотеку python, ничего устанавливать не требуется.
Измени адреса, логин и пароль в скрипте ниже на свои (валидные).
Будут вопросы пиши.
(Нажмите, чтобы показать/скрыть)

Оффлайн bologa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
Офигеть! Сейчас начинаю тестить!  :D :)

Оффлайн Metus_Violarium

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Это бесчеловечно =)
А лично по-моему, то интереснее просто собирать статистику и раз в месяц, к примеру, отсылать отчёт.
И пользователи, ведь, могут и не догадаться, откуда большой брат знает -_-

Оффлайн bologa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
Всё отлично работает, сегодня начинаю внедрять прогу!

vasiliyVV огромное спасибо!

Тема не закрывается, будем смотреть события в процессе.

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Тема не закрывается, будем смотреть события в процессе.

Возможно это будет самым интересным

Оффлайн vasiliyVV

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Не спеши :) Скоро будет изменение. В таком виде если есть проблемы с сетью (выдернули кабель, как пример) письмо ты не получишь.
Как будет время сделаю при отсутствии коннекта сохранение в локальную папку (а лучше на сервер) и при следующем запуске отправку.
Если будут выдергивать постоянно... есть идея, но не совсем гуманная, торопиться не будем.

Оффлайн bologa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
 :) Да, кстати, траблы с сетью возможны, это замечание по делу!
А вообще если пофантазировать на тему проги, можно выдумать что-то вроде следующего:

Программа ведёт свой собственный лог, в котором записывает рабочие данные.
С помощью этих данных можно показывать, например, количество опозданий в месяц или суммарное время опозданий за месяц, год или другой период. В качестве доп информации для повышения самосознательности  ;D

Вы видите это окно потому что опоздали на работу.
Опозданий в августе: 15
Суммарное время опозданий: 00:49


Есть ещё такая особенность, как местные командировки сотрудников - отправил директор с утра сотрудника в магазин за цветами на 8е марта, например :)

Можно сделать что-то вроде чекбокса с надписью Уважительная причина. И, допустим, при активации чекбокса в логах и эта причина регистрируется как уважительная :) Хотя это нужно только в случае вывода количества опозданий, при стандартном функционале проги сотрудник напишет в объяснительной - ходил за цветами по заданию директора и всё будет ОК.

Всё это конечно фантазии и функционала программы такой, какая она ей сейчас хватает и даже остаётся! Особенно сейчас когда объяснительные приходят на мыло! :D

Оффлайн bologa

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
Начинаем внедрение проги. И так.

Сегодня столкнулся с тем, что прога никак не хочет запускаться в те временные промежутки которые мы ей выделили, напомню условие:

if 11 >= strftime("%H") >= 9 and strftime("%M") >= 5: #если час прихода 9-11 и минуты больше или равны 5 (9:05-11:15)
    gtk.main() #запускаем скрипт
else:
    quit()


Менял диапазон с 11 до 20, чтобы попадать во время запуска - ну ни в какую.
Голову изломал, оказывается функция strftime возвращает строковую переменную, а мы то сравниваем её с целым числом.
Нагуглил как преобразовывать строку в число, получил вот такой код:


if 11 >= int(strftime("%H")) >= 9 and int(strftime("%M")) >= 5: #если час прихода 9-11 и минуты больше или равны 5 (9:05-11:15)
    gtk.main() #запускаем скрипт
else:
    quit()

 

Страница сгенерирована за 0.044 секунд. Запросов: 25.