1 votos

Usando nohup en el SSH remoto script, dentro del propio script.

Estoy tratando de usar nohup + redirección + operador de fondo ("&") para ejecutar un script remoto vía SSH y desconectar.

Esto funciona:

ssh -n fred@fredbox.local 'nohup sudo /opt/scripts/do-thing.sh arg1 arg2 >/dev/null 2>&1 '

Quiero encapsular las partes de nohup dentro de un wrapper que ejecute el verdadero script remoto, pero que haga el nohup y la redirección de la salida. Pero simplemente no funciona.

Ejemplo remoto script"/opt//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

Poner el nohup y la redirección de salida en el propio script remoto no funciona.

Tengo xtrace activado, así que incluso intenté capturar stderr en la línea SSH así

ssh -n fred@fredbox.local "/opt/scripts/remote-exec-script.sh >/dev/null 2>&1"

¿Es esto posible?

2voto

JDS Puntos 505

He descubierto el problema; tiene que ver con pty asignación ( -tt banderas en ssh) y sudo.

TL;DR: Esto funciona como yo quería, siempre y cuando el script remoto satisfaga las siguientes condiciones:

  • No necesita sudo
  • Si necesitan sudo, el usuario remoto tiene NO_PASSWORD sudo para las operaciones en cuestión
  • Como alternativa, se puede hacer sin pty La asignación es uno de los usos de la -S para sudo, para aceptar la contraseña a través de stdin. No he utilizado este método.
  • Toda la salida es capturada por el script remoto

Usé la opción (2) -- el usuario remoto tiene sudo sin contraseña.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: