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

Come eseguire un comando remoto in PuTTY dopo il login e mantenere la shell in esecuzione?

Quello che sto cercando di fare: avviare una sessione PuTTY dalla riga di comando, accedere alla macchina remota e cd alla directory fornita.

putty.exe -agent -ssh some.host

Questo aprirà una sessione e farà il login con il mio nome di login e la mia chiave privata di default.

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

Che aprirà una sessione, farà il login, eseguirà un comando (cd in questo caso) e uscirà.

Come posso aprire una sessione, fare il login, cd e mantenere la sessione aperta?

Sfondo: Uso emacs sotto windows e spesso modifico file su macchine Unix remote usando tramp & plink. Voglio fare un tasto di scelta rapida che apra una sessione PuTTY per quella macchina remota e chdirs alla directory di quel file. Non è un grosso problema sul lato emacs, ma sono bloccato con PuTTY.

Risposte (2)

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

Quello che fa lo -m è che fa sì che PuTTY istruisca il server SSH ad avviare quel comando invece di una shell. Così una volta che il tuo comando finisce, finisce anche la sessione.

Se vuoi eseguire la shell dopo il comando cd, devi aggiungerlo esplicitamente al tuo cmd.txt, come:

cd /my/path ; /bin/bash

Anche lo -m implica “nopty”/modalità non interattiva. Per usare una shell interattiva devi sovrascriverla usando lo switch -t .

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

In alternativa usate KiTTY con il suo switch -cmd, che fa quello che volete (e non ha bisogno di un file temporaneo).

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

La sessione di tramp che stai avviando in emacs e la sessione di shell che esegui tramite putty sono processi completamente separati.

Probabilmente faresti meglio a controllare le opzioni di configurazione per tramp per vedere se c'è un modo per impostare una directory predefinita per host all'interno della tua configurazione di emacs. Forse inizia con l'opzione di configurazione tramp-remote-path come documentato qui .

Se hai bisogno di usare putty per stabilire la connessione, probabilmente vuoi impostare un tunnel ssh e far connettere emacs/tramp attraverso quello.