Usando nohup no script SSH remoto, dentro do próprio script

1

Estou tentando usar o nohup + redirection + operador de segundo plano ("&") para executar um script remoto via SSH e desconectar.

Isso funciona:

ssh -n [email protected] 'nohup sudo /opt/scripts/do-thing.sh arg1 arg2 >/dev/null 2>&1 '

Eu quero encapsular as partes nohup dentro de um wrapper que executa o script remoto real, mas faz o redirecionamento nohup e output. Mas isso simplesmente não funciona.

Exemplo de script remoto "/opt/scripts/remote-exec-script.sh":

#!/usr/bin/env bash
set -o xtrace
set -o errexit
set -o nounset

ARG1=${1}
ARG2="${2}

nohup sudo /opt/scripts/do-thing.sh $ARG1 $ARG2  >/dev/null 2>&1

Colocar o redirecionamento nohup e output no próprio script remoto não funciona.

Eu tenho o xtrace ligado, então eu até tentei capturar o stderr na linha SSH assim como

ssh -n [email protected] "/opt/scripts/remote-exec-script.sh >/dev/null 2>&1"

Isso é possível?

    
por JDS 16.06.2017 / 00:56

1 resposta

2

Eu descobri o problema; tem a ver com pty alocação ( -tt flags no ssh) e sudo.

TL; DR: Funciona como eu queria, desde que o script remoto satisfaça as seguintes condições:

  • Não precisa de sudo
  • Se eles precisarem do sudo, o usuário remoto tem o comando NO_PASSWORD sudo para as operações em questão
  • Como alternativa, pode-se fazer sem pty alocação é um usa o -S sinalizador para sudo, para aceitar a senha via stdin. Eu não usei esse método.
  • Toda saída é capturada pelo script remoto

Eu usei a opção (2) - o usuário remoto tem sudo sem senha.

    
por 22.06.2017 / 22:40

Tags