Pregunta SSH - Ejecuta un comando, luego dame un shell


Esta pregunta Me recordó a uno de los míos. Quiero crear un alias que lo haga. ssh a una máquina, ejecuta un comando (en este caso, cd a una ruta proporcionada) y luego me da una concha. He corrido un centenar de variaciones de esto:

$ ssh user@machine 'cd /some/path/ && bash -i -l'

que es lo mejor que puedo hacer. Me da un mensaje de bash en el directorio correcto, pero sin control de trabajo y sin la capacidad de usar las teclas de flecha (y algunos otros accesos directos). ¿Hay una forma fácil de hacer esto?

No puedo hacer esto fácilmente al final de mi perfil o base, porque la ruta a la que quiero ir varía (lo pasaré como un argumento al alias) y, ocasionalmente, incluso ssh a esa máquina sin querer ir a ningún lado raro, el directorio de inicio está bien.


4
2017-08-04 14:28


origen




Respuestas:


Trate de dar el ssh -t Opción de tenerlo asignado un terminal.


12
2017-08-04 14:56



Oh Dios mío, eso funcionó. Eres mi heroe. - Plutor
Probablemente tienes dos proyectiles corriendo en este punto. Si eso es una preocupación, usted puede prefaciar la llamada a bash con exec. Creo que funcionará. - wfaulk


Mire la página del manual de sshd, Sección de formato de archivo de Authorized_keys. Dentro tiene la opción command = "command", que es qué hacer cuando esa tecla se conecta. El comando original incluido para la conexión se incluye en una variable.

Es posible que pueda configurar este comando para que ejecute bash con un script de inicio que verifique el valor del comando original y lo ejecute, y luego lo deje en un shell interactivo.


2
2017-08-04 15:24





Esto va a ser diferente porque cd no es un comando, sino un shell incorporado que cambia el directorio de trabajo actual de los programas.

Me temo que nunca encontré una buena manera de hacer esto, pero tal vez eso ayude a aclarar algunas confusiones.


1
2017-08-04 15:01



Si pero el cd el comando es entregado a un shell por sshd, y CWD se pasa a los procesos secundarios. - wfaulk


Creo que el mejor lugar para hacer tu cd /some/path/ esta en tu .bashrc en la máquina remota.


0
2017-08-04 14:39



El problema es que / some / path / no siempre es el mismo y, a veces, ssh a la máquina y quiero estar en mi directorio de inicio como siempre. Agregaré esa información a la pregunta. - Plutor
Tomando la página del manual literalmente, creo que es un comando o una shell interactiva adecuada - Sgaduuw