Identificando sessões locais e remotas

3

Eu gostaria de escrever um script de inicialização que executaria sua tarefa se fosse executado na máquina local, mas não se fosse chamado de uma sessão xrdp remota.

If Local
{
 do something
}
If remote
{
 do something else
}

Como eu identificaria se a sessão foi iniciada localmente ou iniciada remotamente?

    
por Lord Loh. 06.10.2012 / 03:41

1 resposta

1

Este é, infelizmente, um problema muito difícil. Então, no caso geral, a resposta é infelizmente não. Olhando para $ DISPLAY não é suficiente, isso significa apenas que existe um servidor X local de alguma forma (como o xrdp), não que o usuário esteja fisicamente na máquina.

A única opção que eu conheço é o ConsoleKit, que tem um atributo "is-local". Infelizmente eu não conheço nenhuma maneira fácil de verificá-lo a partir de um script de shell. Você pode fazer algo usando "ck-list-sessions".

Observe também que houve um bug em um ponto em que você poderia facilmente pensar que uma sessão remota era local.

Se a segurança não é tão importante, sugiro verificar se o xrdp define algumas variáveis de ambiente especiais que estão presentes apenas para esse tipo de sessão. Basta executar "env" em um terminal e você verá o que está disponível.

    
por 11.10.2012 / 15:49