Saber que o usuário está acessando um script de shell?

Saber que o usuário está acessando um script de shell?

Eu tenho um script de shell que gostaria de fazer uma coisa se o usuário estiver usando fisicamente o computador e outra se o usuário estiver logado via SSH.

Como eu faria isso?

Em termos mais específicos, minha máquina normal é o OS X, e aí quero usar um editor gráfico do OS X (BBEdit) como meu EDITOR. No entanto, se eu estiver usando SSH no meu Mac a partir do meu netbook, quero usar o vim - não tenho uma conexão gráfica com o meu Mac.

Obrigado!

Responder1

Você deve poder usar as variáveis ​​de ambiente SSH_CONNECTION, SSH_TTY ou DISPLAY.

Ver:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/ssh.1.html

 SSH_CONNECTION        Identifies the client and server ends of the connection.  The variable contains
                       four space-separated values: client IP address, client port number, server IP
                       address, and server port number.

Editar: SSH_CLIENT também é uma opção, mas não aparece na página de manual.

Responder2

Compare seu envlocal e quando logado via SSH.

Eu tenho SSH_CONNECTION, por exemplo SSH_CLIENT, SSH_TTYque só são definidos quando logados via SSH.

Responder3

Acredito que /var/run/utmpx (consulte "man utmpx") possui essa informação. Se você executar "who", verá que o comando who pode dizer se você está conectado a partir de um nó remoto (e até sabe de onde você se conectou).

Portanto, você sempre pode usar o comando who e massagear a saída para determinar isso.

Nota: acredito que as respostas acima (sobre o uso de SSH_CONNECTION) são uma solução melhor.

informação relacionada