En su comentario sobre la respuesta de fons, usted dice que no funciona mientras lo usa screen
.
¿Podrías dar más detalles sobre eso? Mirando el código fuente de openssh, sshd ejecuta el comando llamando
YOUR_DEFAULT_SHELL -c COMMAND
Entonces, por ejemplo, si su shell predeterminado es screen
, entonces esto no funcionará tan bien porque screen
la -c
bandera simplemente anula su .scrreenrc
. Entonces, realmente no hay forma de enviar comandos a la pantalla si es su shell predeterminado. Tendrás que ejecutar screen como el comando dado a ssh, pero con un shell predeterminado que no es screen .
Si eso es lo que estás tratando de hacer, creo que las cosas se pondrán realmente extrañas, ya screen
que también cerrarán ventanas con programas no interactivos, por lo que tendrás que hacer un truco similar al de fons, pero un nivel más profundo. SO, con, por ejemplo, / bin / bash (y no la pantalla) como shell predeterminado Algo como:
ssh user@host -t 'screen bash -l -c "ls;bash"'
Lo cual debería, tomar una respiración profunda, ssh en el host, ejecutar bash -c con un comando de pantalla, lo que abrirá una nueva ventana. Si esta ventana solo abriera ls, terminaría y la pantalla terminaría, por lo que usamos el truco de fons dentro de la nueva ventana de pantalla .
Creo que funcionará, incluso si eso es lo que intentabas hacer;)