Como se conectar a um servidor remoto e executar algum código nesse servidor em particular?

1

Estou implementando um esquema de backup automatizado, portanto, criei um script de shell que primeiro cria dumps de SQL para todos os bancos de dados MySQL e, em seguida, recupera todos os sites do diretório /var/www de um servidor remoto. O último está funcionando, pois estou usando o rsync para obter os arquivos remotos.

No entanto, os dumps do MySQL que estão sendo recuperados são aqueles do servidor local que não é o que eu quero. Eu quero obter os dumps SQL do servidor remoto também.

Eu tenho um túnel entre o servidor local e remoto ao qual posso me conectar sem usar nenhuma senha (adicionei a chave pública ao authorized_hosts), então tentei adicionar o seguinte código ao script:

ssh [email protected]

Eu então tentei recuperar os despejos de SQL e saí do servidor remoto. No entanto, isso não funciona, pois ainda preciso inserir a saída manualmente no terminal para que os dumps SQL sejam recuperados do host remoto. Eu não sei porque isso está acontecendo. Isto é o que o script está tentando fazer:

//connect to remote server 
ssh [email protected]

//retrieve SQL dumps 
//code to retrieve...

//exit from remote server 
exit

//use rsync to get remote files of /var/www from local server (working)

Existe uma maneira de se conectar ao host remoto E executar o código do script nesse host remoto?

    
por seedg 30.06.2011 / 09:33

2 respostas

4

Basta adicionar o comando que você deseja executar no final da linha de comando ssh. Então, algo assim:

ssh [email protected] /path/to/script

executará /path/to/script na máquina remota.

    
por 30.06.2011 / 09:47
2

Se for um comando, use ssh user@host remotecommand . Por exemplo:

ssh user@dbhost "mysqldump" > dumpfile

Observe que os redirecionamentos ocorrem localmente (a menos que você os insira entre aspas), portanto dumpfile será criado no computador local.

O argumento remotecommand é de fato passado para o shell padrão de user , então você pode usar coisas como a; b && c e if / while. Mas é mais sensato colocá-los em um segundo arquivo de script (no servidor db).

    
por 30.06.2011 / 09:52