Como executar um comando remoto no PuTTY após o login e manter o shell em execução?


35

O que estou tentando fazer: iniciar uma sessão PuTTY na linha de comando, faça login na máquina remota e cdno diretório fornecido.

putty.exe -agent -ssh some.host

Isso abrirá uma sessão e o login com o meu nome de login padrão e chave privada.

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

Isso abrirá uma sessão, efetuará login, executará um comando ( cdneste caso) e sairá .

Como faço para abrir uma sessão, fazer login cde manter a sessão aberta?

Antecedentes: Eu uso o emacs no Windows e frequentemente edito arquivos em máquinas remotas Unix usando tramp & plink. Eu quero criar uma tecla de atalho que abra uma sessão PuTTY para essa máquina remota e chdirs para o diretório desse arquivo. Não é grande coisa do lado do emacs, mas estou preso ao PuTTY.

Respostas:


33

O que -mfaz é que ele faz o PuTTY instruir o servidor SSH a iniciar o (s) comando (s) EM VEZ de um shell. Assim que o comando terminar, a sessão também termina.

Se você deseja executar o shell após o cdcomando, é necessário adicioná-lo explicitamente ao seu cmd.txt, como:

cd /my/path ; /bin/bash

Também -mimplica o modo "nopty" ​​/ não interativo. Para usar um shell interativo, você precisa substituí-lo usando o -tswitch .

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

Como alternativa, use o KiTTY com sua -cmdopção, que faz o que você deseja (e não precisa de um arquivo temporário).


Eu tentei isso (adicionando / bin / bash ao cmd.txt) e isso não funciona. Tanto quanto eu entendo, o bash inicia no modo não interativo e, não tendo código para executar, sai. Existe uma maneira de iniciar um shell interativo dessa maneira?
Artyom V. Kireev

Enquanto isso, tentei iniciar o mc. :-) Não forneceu, e forneceu alguns resultados:Cannot get terminal settings: Invalid argument (22) TERM environment variable needs set.
Artyom V. Kireev 25/04

Obrigado pela diretriz aqui, mas parece que tenho um problema ao tentar usar massa -m "myfile.sh" -tpara conectar a um tinycorelinux vm (/ bin / ash). I irá receber seguinte erro: i.imgur.com/QN5oRXC.png (meu script começa com echo ".."ele irá mostrar sempre a primeira letra no meu script após os caracteres ilegais
Vincent De Smet

se eu usar configure um comando remoto no perfil de massa, ele funciona
Vincent De Smet

-1

A sessão tramp que você está iniciando no emacs e a sessão do shell executada via putty são processos completamente separados.

Provavelmente, é melhor verificar as opções de configuração do tramp para ver se há uma maneira de definir um diretório padrão por host na configuração do emacs. Talvez comece com a tramp-remote-pathopção de configuração conforme documentado aqui .

Se você precisar usar massa para estabelecer a conexão, provavelmente desejará configurar um túnel ssh e ter o emacs / tramp conectado através disso.


Emacs e vagabundo são irrelevantes aqui, acrescentei isso apenas pelo fundo. Não se trata de editar arquivos no emacs, é abrir um shell para fazer outra coisa com esse arquivo (por exemplo, executar um script). Estou cansado de "iniciar o putty, escolher seu host e depois fazer o cd para o caminho que você precisa" e quero automatizar isso.
Artyom V. Kireev
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.