Como se pode enviar comandos para a sessão ssh “interna”?

30

Imagine um cenário em que estou logado em um servidor (que chamaremos de "Wallace") da minha máquina local e, a partir daí, eu ssh em outro servidor (que chamaremos de "Gromit"):

laptop ---ssh---> Wallace ---ssh---> Gromit

Então a sessão ssh de Wallace para Gromit trava, e eu quero matá-lo. Se eu inserir ~. para matar ssh, ele mata a sessão ssh do meu laptop para Wallace, porque o ~ é interceptado por essa sessão ssh e o . é considerado um comando para matar a sessão. Como envio um comando para a sessão ssh entre Wallace e Gromit? Como mato o meu "interior" ssh?

    
por iconoclast 05.10.2012 / 16:59

2 respostas

39

Adicione outro til (ou seja, digite ~~. ). Cada til sucessivo é comido pela sessão ssh mais externa que ainda não comeu um, mas se o próximo caractere for outro til, ele será passado para a próxima sessão.

Se, de gromit 1 , você ssh'ed para um terceiro host (vamos chamá-lo de wensleydale), então ~~~. deixaria a sessão para wensleydale e retornaria para um prompt no gromit.

1 E que ótimo servidor que é; Quantas vezes eu ouvi um desenvolvedor comentar "quebrando host, gromit"?

    
por 05.10.2012 / 17:14
-2

Você pode emitir comandos arbitrários e capturar a saída do shell mais interno em uma variável

export output='echo some_cmd | ssh user@host |  echo some_cmd2 | ssh user2@host2'
    
por 05.10.2012 / 17:37