Como executar um script de shell local em um servidor SSH remoto

O problema com a execução de comandos sobre SSH é que geralmente você precisa digitá-los ou fazer upload de um arquivo de script. No entanto, com um pouco de conhecimento de bash, você pode passar scripts inteiros por SSH sem ter o arquivo . sh na máquina remota.
A solução: Passe o script sobre a entrada padrão
O comando SSH possui um modo onde você pode executar qualquer comando único em um servidor remoto. Para executar vários comandos, você &’ terá que usar o seguinte hack:
usuário ssh @ remotehost 'bash -s' < script. sh
O comando bash -s significa “ execute os seguintes comandos em uma nova sessão bash. ” O sinalizador -s faz com que seja lido da entrada padrão e o < script. sh bit lerá um arquivo de script local na entrada padrão.
O arquivo é lido inteiramente localmente e tudo é enviado ao servidor remoto sem enviar nada. Isso exige que você coloque todos os comandos em um arquivo de script separado.
Executando muitos comandos remotos dentro de um script
Se, em vez disso, você deseja executar uma parte de um script de shell em outro servidor, mas não o todo, pode incluir blocos aninhados como os seguintes em seu script:
usuário ssh @ remotehost 'bash -s' < < 'ENDSSH' # Os seguintes comandos são executados no host remoto echo "test" cd / home / pwd ENDSSH
Publicidade
Isso funciona porque o bash -s espera qualquer tipo de entrada padrão. A diretiva < < 'ENDSSH' cria um “ here-document ” estrutura, basicamente passando todos os caracteres entre ela e o final “ ENDSSH ” para a entrada padrão e, portanto, para o host remoto por SSH.
Fazer dessa maneira significa que você pode manter tudo em um arquivo de script, em vez de criar um novo para ser executado remotamente.
Nenhum comentário