3

У меня есть Perl-скрипт (точнее, этот скрипт ), который регистрирует активность пользователя в зависимости от времени простоя в MacOS X Snow Leopard System. Однако при включенном быстром переключении пользователей одновременно может быть зарегистрировано более одного пользователя. Я хочу, чтобы скрипт видел компьютер как «бездействующий», если другой пользователь активен (т.е. использует графический интерфейс) через быстрое переключение пользователей.

Существует множество способов выяснить, когда пользователь вошел в систему. Узнать, когда пользователь последний раз "переключался", кажется сложнее. Мое решение до сих пор было посмотреть на /var/log/secure.log , где регистрируются события быстрого переключения пользователей:

tail -200 /var/log/secure.log | grep "User info context values set" | tail -1

Однако для пользователей, выполняющих сценарий Perl, которые не являются администраторами, secure.log не будет доступен для чтения. Есть ли альтернативные способы узнать, какой пользователь в данный момент активно вошел в систему, или каким было последнее событие быстрого переключения пользователей?

Конечно, проблему можно было бы обойти, если бы у меня был метод определения времени простоя только для пользователя, выполняющего скрипт, а не общего времени простоя компьютера, который я сейчас получаю от ioreg . Так что я тоже открыт для предложений.

Спасибо!

1 ответ1

4

Я не знаю, как получить время с момента переключения, но вы можете получить текущего активного пользователя, проверив владельца в /dev /console. Вероятно, в Perl есть лучший способ, но команда stat сделает это:

my $user = `stat -f%Su /dev/console`;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .