Obtenha o nome do usuário ativo no script no Mac OS

3

Eu tenho um script perl ( este script , para ser exato) que registra a atividade do usuário com base no tempo ocioso em um sistema MacOS X Snow Leopard. No entanto, com a troca rápida de usuário ativada, mais de um usuário pode estar logado ao mesmo tempo. Eu quero o script para ver o computador como 'ocioso' se outro usuário estiver ativo (ou seja, usando a GUI) através de troca rápida de usuário.

Existem várias maneiras de descobrir quando um usuário fez login. Descobrir quando um usuário "comutou" por último parece mais difícil. Minha solução até agora era olhar para /var/log/secure.log , onde eventos de troca rápida de usuário são registrados:

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

No entanto, para os usuários que executam o script perl que não são Admin, secure.log não será legível. Existe alguma maneira alternativa de descobrir qual usuário está atualmente logado ou qual foi o último evento de Troca Rápida de Usuário?

É claro, o problema poderia ser contornado se eu tivesse um método para descobrir o tempo ocioso do usuário que está executando o script, e não o tempo ocioso total do computador que estou recebendo atualmente de ioreg . Então, estou aberto a sugestões também.

Obrigado!

    
por Michael Goerz 19.09.2010 / 20:35

1 resposta

4

Eu não sei como obter tempo desde a mudança, mas você pode obter o usuário atualmente ativo verificando a propriedade em / dev / console. Há provavelmente uma maneira melhor em Perl, mas o comando stat fará isso:

my $user = 'stat -f%Su /dev/console';
    
por 20.09.2010 / 06:30

Tags