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.
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?
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.
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).