executando tail -f em um servidor que se conecta a outro servidor por ssh

2

Eu tenho usado o seguinte comando para conectar a um servidor, que se conecta a outro servidor e executa tail -f nele:

ssh server1.com ssh server2.com tail -f file.log

Isso até agora funciona bem. No entanto, quando eu quero sair do processo de cauda pressionando ctrl + c, eu não saio do processo de cauda, mas o processo ssh. Isso deixa o processo final em execução no servidor remoto, o que obviamente não é uma boa ideia.

Alguém tem alguma idéia de como eu poderia consertar essa linha de comando? Eu também estaria interessado se houvesse ferramenta, rodando em OS X, que permitiria alternar confortavelmente entre a visualização de arquivos diferentes no servidor remoto.

    
por Steve Hummingbird 30.11.2011 / 14:59

1 resposta

1

Se você tiver o netcat instalado no server1.com (provavelmente o faz), talvez queira usar a diretiva ssh ProxyCommand para alternar facilmente entre o server1.com; assim, quando você pressiona Ctrl + C, só terminará o comando no server2.com, não na sua sessão SSH.

Exemplo do seu ~/.ssh/config (crie o arquivo se ele não existir; acrescente ao final se ele existir):

Host server2.com
  User piskvor
  ProxyCommand ssh -q server1.com nc -q0 server2.com 22

O que acontece aqui:

  • ssh conecta-se ao server1.com
  • conecta-se remotamente a partir daí para server2.com (usando nc)
  • que transporta os dados por meio do server1.com

Isto é completamente transparente para o seu cliente ssh, então você pode trabalhar com o server2.com como se estivesse conectado diretamente (por exemplo, SFTP, X forwarding, TCP forwarding, etc.)

Para uma explicação mais detalhada (além de estender isso a vários saltos), consulte este artigo ou esta pergunta semelhante sobre SU .

    
por 30.11.2011 / 15:13