Como executar ssh e executar um script remoto dentro de um script de shell local?

0

Eu tenho um script de shell que irá iniciar uma série de trabalhos em um servidor remoto. Eu posso ssh para este servidor (mas requer uma senha!) E executar os scripts manualmente, mas há certas etapas que também são feitas localmente, então eu gostaria de evitar manualmente sshing e executar as coisas. Existe uma maneira de automaticamente ssh / login e, em seguida, lançar o comando dentro de um script de shell local maior?

    
por john 18.11.2014 / 02:05

3 respostas

1

Gostaria de sugerir se você tem muitos comandos para executar no servidor remoto que você cria como um script de shell que você carrega uma vez e, em seguida, executá-lo uma vez por comando ssh.

Certifique-se de ter permissões de execução no script e de que ele não dependa de informações obtidas da sessão normal do shell, como variáveis ou caminho definido por um script de login interativo, por exemplo: .bashrc como esses não são executados ao executar um comando através de um comando ssh remoto.

Lembre-se também de verificar se o "retorno" do script está marcado para garantir que o comando seja concluído conforme o esperado.

    
por 18.11.2014 / 03:30
0

Para executar um script / comando na execução do host remoto

ssh [<USER>@]<REMOTE_HOST> [-f] <REMOTE_COMMAND>

Adicione a opção -f se quiser que o ssh vá imediatamente para o segundo plano em vez de esperar que o comando termine.

Concebendo o login, a identificação automática de senhas é, em geral, uma má ideia. Se realmente for impossível para sua configuração, gerar um par de chaves privada / pública (com a chave privada armazenada na máquina local e a chave do bar armazenada na máquina remota) e usá-la para autenticação - como sugerido no comentário acima - , você terá que reverter para uma ferramenta como sshpass , onde você pode iniciar sua sessão / comando remoto via:

sshpass -p <YOURPASSWORD> ssh [<USER>@]<REMOTE_HOST> [-f] [<REMOTE_COMMAND]
    
por 18.03.2015 / 14:26
0

Você pode usar a autenticação de chave pública / privada para estabelecer seu ssh sem a necessidade de uma senha. Para fazer isso você só precisa gerar o par de chaves ( ssh-keygen ) e adicionar sua chave pública ao arquivo user ~ / .ssh / authorithed_keys do servidor.

#!/bin/bash
ssh user@server RemoteCommand #man ssh for more info
local command1
local command2
.....
    
por 18.03.2015 / 14:58