Saber se o usuário está digitando a partir de um script de shell?

2

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

Como eu faria isso?

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

Obrigado!

    
por RyanWilcox 27.01.2012 / 17:27

3 respostas

2

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

Veja: link

 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 man.

    
por 27.01.2012 / 17:44
1

Compare seu env localmente e quando estiver conectado via SSH.

Eu tenho, por exemplo SSH_CONNECTION , SSH_CLIENT , SSH_TTY que são definidos apenas quando conectados via SSH.

    
por 27.01.2012 / 17:43
0

Eu acredito que o / var / run / utmpx (veja "man utmpx") possui esta 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é mesmo sabe de onde você se conectou).

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

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

    
por 27.01.2012 / 17:37

Tags