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


35

Cosa sto cercando di fare: avviare una sessione PuTTY dalla riga di comando, accedere al computer remoto e cdalla directory fornita.

putty.exe -agent -ssh some.host

Questo aprirà una sessione e accederà con il mio nome di accesso predefinito e chiave privata.

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

Questo aprirà una sessione, effettuerà il login, eseguirà un comando ( cdin questo caso) e uscirà .

Come posso aprire una sessione, accedere cde tenere aperta la sessione?

Background: utilizzo emacs sotto windows e spesso modifico file su macchine Unix remote usando tramp & plink. Voglio creare un tasto di scelta rapida che apre una sessione PuTTY per quella macchina remota e chdir nella directory di quel file. Non è un grosso problema da parte di Emacs, ma sono bloccato con PuTTY.

Risposte:


33

Ciò che -mfa è che PuTTY indichi al server SSH di avviare i comandi INSTEAD di una shell. Quindi, una volta terminato il comando, anche la sessione.

Se si desidera eseguire la shell dopo il cdcomando, è necessario aggiungerla in modo esplicito al proprio cmd.txt, come:

cd /my/path ; /bin/bash

Anche la modalità -m"nopty" ​​/ non interattiva implica. Per utilizzare una shell interattiva è necessario sovrascriverlo utilizzando l' -topzione .

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

In alternativa, usa KiTTY con il suo -cmdswitch, che fa quello che vuoi (e non ha bisogno di un file temporaneo).


L'ho provato (aggiungendo / bin / bash a cmd.txt) e non funziona. Per quanto ho capito, bash inizia in modalità non interattiva e, non avendo codice da eseguire, esce. C'è un modo per avviare una shell interattiva in quel modo?
Artyom V. Kireev,

Nel frattempo, ho provato ad avviare mc. :-) No, e ha fornito alcuni risultati:Cannot get terminal settings: Invalid argument (22) TERM environment variable needs set.
Artyom V. Kireev

Grazie per le linee guida qui, ma mi sembra di avere un problema nel tentativo di usare putty -m "myfile.sh" -tper connettersi a un tmycorelinux vm (/ bin / ash). Visualizzerò il seguente errore: i.imgur.com/QN5oRXC.png (la mia sceneggiatura inizia con echo ".."essa mostrerà sempre la prima lettera nella mia sceneggiatura dopo i personaggi illegali
Vincent De Smet,

se uso configurare un comando remoto nel profilo dello stucco, funziona
Vincent De Smet,

-1

La sessione del vagabondo che stai iniziando in emacs e la sessione della shell che esegui tramite putty sono processi completamente separati.

Probabilmente stai meglio controllando le opzioni di configurazione per il vagabondo per vedere se c'è un modo per impostare una directory predefinita per host all'interno della configurazione di emacs. Forse iniziare con l' tramp-remote-pathopzione di configurazione 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.


Emacs e vagabondo sono irrilevanti qui, l'ho aggiunto solo per lo sfondo. Non si tratta di modificare file in emacs, si tratta di aprire una shell per fare qualcos'altro con quel file (ad es. Eseguire uno script). Sono stanco di "start putty, scegli il tuo host, quindi cd nel percorso che ti serve" e voglio automatizzarlo.
Artyom V. Kireev,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.