2013-04-25 15:06:20 +0000 2013-04-25 15:06:20 +0000
37
37

¿Cómo ejecutar un comando remoto en PuTTY después de iniciar sesión y mantener el shell en funcionamiento?

Lo que estoy tratando de hacer: iniciar una sesión PuTTY desde la línea de comandos, iniciar sesión en la máquina remota y cd al directorio proporcionado.

putty.exe -agent -ssh some.host

Eso abrirá una sesión e iniciará la sesión con mi nombre de usuario y clave privada por defecto.

echo cd /some/remote/path/ > c:/stuff/cmd.txt
putty.exe -agent -ssh some.host -m 'c:/stuff/cmd.txt'

Eso abrirá una sesión, iniciará sesión, ejecutará un comando (cd en este caso) y saldrá.

¿Cómo abro una sesión, me conecto, cd y mantengo la sesión abierta?

Antecedentes: Uso emacs bajo windows y a menudo edito archivos en máquinas Unix remotas usando tramp & plink. Quiero hacer una tecla de acceso rápido que abra una sesión PuTTY para esa máquina remota y chdirs al directorio de ese archivo. No es un gran problema en el lado de emacs, pero estoy atascado con PuTTY.

Respuestas (2)

33
33
33
2013-04-25 16:00:56 +0000

Lo que hace el -m es que hace que PuTTY instruya al servidor SSH para que inicie ese(os) comando(s) EN LUGAR de un shell. Así que una vez que su comando termina, también lo hace la sesión.

Si quieres ejecutar el shell después del comando cd, necesitas añadirlo explícitamente a tu cmd.txt, como:

cd /my/path ; /bin/bash

También el -m implica “nopty”/modo no interactivo. Para usar un shell interactivo necesita anularlo usando el interruptor -t .

putty.exe -ssh example.com -m "c:\path\cmd.txt" -t
  • *

Alternativamente use KiTTY con su interruptor -cmd, que hace lo que usted quiere (y no necesita un archivo temporal).

-1
-1
-1
2013-04-25 15:11:43 +0000

La sesión de tramp que estás iniciando en emacs y la sesión de shell que ejecutas a través de putty son procesos completamente separados.

Probablemente sea mejor que compruebes las opciones de configuración de tramp para ver si hay una forma de establecer un directorio por defecto por host dentro de la configuración de emacs. Tal vez empiece con la opción de configuración tramp-remote-path como documentado aquí .

Si necesitas usar putty para establecer la conexión, probablemente quieras configurar un túnel ssh y hacer que emacs/tramp se conecte a través de él.