Script para conexão com o ssh, em seguida, o comando uma vez conectado

0

Eu preciso escrever um script que se conecte a um servidor remoto, depois de conectado, conecte-se a outro servidor e depois mude de diretório. O seguinte, claro, não funciona (ele se conecta ao primeiro servidor, em seguida, o script é interrompido e retomado depois de desconectado):

#!/bin/bash
echo begin:
ssh  serv_1
ssh  serv_2
cd dir1

exit 0

O que preciso fazer? Eu li alguns posts com perguntas semelhantes às minhas, mas não entendi as respostas.

    
por Donald 30.04.2016 / 21:05

1 resposta

0

A resposta curta é

ssh srv_1 'ssh srv_2 "command"'

em que command é o comando que você deseja executar.

Ele também funciona sem as aspas simples, mas eu gosto delas para ajudar na compreensão.

ssh srv_1 ssh srv_2 "command"

Usar as citações nos dá alguma estrutura para trabalhar, mas como você pode ver, elas não são fundamentalmente necessárias.

Isso também funciona,

ssh srv_1 ssh srv_2 command

Não podemos dizer pelas informações que você nos forneceu se isso funcionará, ou se o comando fará qualquer coisa, mas a sintaxe acima é a abordagem que eu tomaria.

Se você tiver que começar a usar variáveis ou substituir comandos, ele ficará mais complexo, mais rápido e você precisará ter cuidado ao citar e fugir.

Veja um exemplo disso funcionando.

Netuno é minha máquina host. Trinity é outro servidor. Matrix é o servidor final.

tony@neptune:~$ ssh trinity 'ssh matrix "hostname"'
matrix

Portanto, o comando retorna a matriz hostname, porque foi executada na matriz do servidor.

NB: Mudar um diretório desta maneira não terá absolutamente nenhum efeito, as mudanças no diretório são relevantes apenas para o shell no qual elas são executadas.

Veja o que quero dizer,

tony@Neptune:~$ ssh trinity 'ssh matrix "cd /tmp"'
tony@Neptune:~$ ssh trinity 'ssh matrix "pwd"'
/home/tony

O segundo comando mostra que o comando cd anterior não teve efeito duradouro.

    
por 30.04.2016 / 23:54