Собственные события запускаются, когда пользователь входит в Linux или Mac OS - PullRequest
1 голос
/ 20 августа 2010

Я занимаюсь разработкой фонового сервиса, который должен работать в Windows, Linux, Mac OS и Solaris.Услуга очень проста и должна использоваться для отслеживания входа и выхода студентов из компьютеров университета.Я почти закончил реализацию сервиса в Windows.

Я инвестировал в ряд книг по разработке собственных приложений / сервисов для Linux и для Mac OS.Я могу извлечь из них основы, но есть кое-что более конкретное, в чем я нуждаюсь, и это, кажется, слишком конкретная тема, чтобы быть предметом моих книг.

Вопрос касается нативных событий в Linux и Mac.ОС, на которую может зарегистрироваться фоновая служба, чтобы реагировать на вход и выход пользователя из системы.Мне также необходимо получить идентификатор пользователя, который вошел в систему или вышел из нее (что должно быть более простым, когда будет решен первый элемент).

Будучи новичком в нативной разработке для Linux и Mac OS, я мог бы действительноизвлечь выгоду из помощи большего количества опытных разработчиков для этих платформ.Друг предложил использовать PAM для регистрации, чтобы получать уведомления о таких событиях.Это правда?

Возможно, мне не нужно знать точные детали всего, что я должен делать, но было бы неплохо узнать, какие нативные события / механизмы доступны для достижения этого (если таковые имеются, но я надеюсь, что это так, потому что Windows, безусловно,есть их).

С уважением

Карл

Ответы [ 3 ]

1 голос
/ 23 августа 2010

В Mac OS X вы можете определить сценарии LoginHook и LogoutHook для запуска как часть процесса входа / выхода из системы;см. документацию Apple и заметки и примеры Майка Бомбича .Другой возможностью будет создание LaunchAgent - главное отличие состоит в том, что LaunchAgent будет запускаться от имени пользователя в рамках сеанса входа в систему, тогда как сценарии LoginHook и LogoutHook запускаются от имени пользователя root.Большинство документов Apple об этом сконцентрированы на LaunchDaemons, но LaunchAgents очень похожи, за исключением того, что они запускаются в сеансах входа пользователя в систему, тогда как LaunchDaemons запускаются как root (но независимо от сеансов входа в систему, что делает их неподходящими для того, что вы хотите).

0 голосов
/ 22 августа 2010

В последних дистрибутивах Linux вы можете посмотреть ConsoleKit , но для более старых и Unix в целом я не знаю ни одного способа получать уведомления в реальном времени, кроме написания собственного кода вставить в систему, например, модуль PAM в ОС, поддерживающей PAM .

0 голосов
/ 20 августа 2010

Это уже отслеживается для unix / linux / mac.Посмотрите на программу командной строки "last" ... man last.

...