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 env
local y cuando inicie sesión a través de SSH.
Tengo SSH_CONNECTION
, por ejemplo SSH_CLIENT
, SSH_TTY
que 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.