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

Como executar um comando remoto no PuTTY após o login e manter a shell a funcionar?

O que estou a tentar fazer: iniciar uma sessão PuTTY a partir da linha de comando, iniciar sessão na máquina remota e cd para o directório fornecido.

putty.exe -agent -ssh some.host

Que abrirá uma sessão & login com o meu nome de login predefinido & chave privada.

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

Que abrirá uma sessão, login, executará um comando (cd neste caso) e sairá.

Como abro uma sessão, início de sessão, cd e mantenho a sessão aberta?

Background: Uso emacs sob janelas e edito frequentemente ficheiros em máquinas Unix remotas usando tramp & plink. Quero fazer uma tecla de atalho que abra uma sessão PuTTY para essa máquina remota e chdirs para o directório desse ficheiro. Não é grande coisa do lado do emacs, mas estou preso ao PuTTY.

Respostas (2)

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

O que o -m faz é, que faz PuTTY instruir o servidor SSH para iniciar esse(s) comando(s) INSTEAD de uma shell. Assim, uma vez terminado o seu comando, a sessão também termina.

Se quiser executar a shell após o comando cd, precisa de o adicionar explicitamente ao seu cmd.txt, como por exemplo:

cd /my/path ; /bin/bash

Também o -m implica o modo “nopty”/non-interactivo. Para utilizar uma concha interactiva, é necessário anular isso utilizando o -t switch .

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

Em alternativa, usar KiTTY com o seu -cmd switch, que faz o que se quer (e não precisa de um ficheiro temporário).

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

A sessão de vagabundagem que está a iniciar em emacs e a sessão de shell que executa através do putty são processos completamente separados.

É provavelmente melhor verificar as opções de configuração do vagabundo para ver se existe uma forma de definir um directório padrão por anfitrião dentro da sua configuração do emacs. Talvez comece com a opção tramp-remote-path configuração como documentado aqui .

Se precisar de usar putty para estabelecer a ligação, provavelmente quer configurar um túnel ssh e ter o emacs/tramp ligado através dele.