我正尝试使用nohup +redirect+后台运算符(“&”)通过SSH运行远程脚本并断开连接。
这工作:
ssh -n [email protected] 'nohup sudo /opt/scripts/do-thing.sh arg1 arg2 >/dev/null 2>&1 '
我想将nohup部分封装在运行实际远程脚本的包装器中,但不执行nohup和输出redirect。 但它不起作用。
示例远程脚本“/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
在远程脚本中放置nohup和输出redirect不起作用。
我有xtrace,所以我甚至尝试在SSH线路捕获stderr像这样
ssh -n [email protected] "/opt/scripts/remote-exec-script.sh >/dev/null 2>&1"
这甚至有可能吗?
我解决了这个问题; 它必须与pty分配(在SSH上-tt标志)和sudo。
TL; DR:只要远程脚本满足以下条件,就可以按照我的要求工作:
pty分配是一个使用-S标志为sudo,通过标准input接受密码。 我没有使用这种方法。 我用选项(2) – 远程用户有无密码sudo。