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 env
local e quando logado via SSH.
Eu tenho SSH_CONNECTION
, por exemplo SSH_CLIENT
, SSH_TTY
que 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.