¿Sabe que el usuario está accediendo desde un script de shell?

¿Sabe que el usuario está accediendo desde un script de shell?

Tengo un script de shell que me gustaría hacer una cosa si el usuario está usando físicamente la computadora y otra si el usuario ha iniciado sesión a través de SSH.

¿Cómo haría para hacer eso?

En términos más específicos, mi máquina normal es OS X, y quiero usar un editor gráfico de OS X (BBEdit) como mi EDITOR. Sin embargo, si estoy utilizando SSH en mi Mac desde mi netbook, quiero usar vim; no tengo una conexión gráfica con mi Mac.

¡Gracias!

Respuesta1

Debería poder utilizar las variables de entorno SSH_CONNECTION, SSH_TTY o 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 también es una opción, pero no aparece en la página de manual.

Respuesta2

Compare su envlocal y cuando inicie sesión a través de SSH.

Tengo SSH_CONNECTION, por ejemplo SSH_CLIENT, SSH_TTYque solo se definen cuando inicia sesión a través de SSH.

Respuesta3

Creo que /var/run/utmpx (ver "man utmpx") tiene esta información. Si ejecuta "who", verá que el comando who puede indicar si está conectado desde un nodo remoto (e incluso sabe desde dónde se conectó).

Por lo tanto, siempre puedes usar el comando who y masajear la salida para determinar esto.

Nota: Creo que las respuestas anteriores (sobre el uso de SSH_CONNECTION) son una mejor solución.

información relacionada