如何在bash中向后台发送ssh命令

时间:2016-07-26 14:09:18

标签: linux bash

我在脚本中有以下行:

output=$(sudo ssh root@172.20.209.11 "/etc/config/users/pzsr7z/scripts-modified/scripts/wizard/enroller 10.193.22.236 22 WDCCRNMTS001 WDCCR-1-COMPT-R102 8")

我如何将其发送到后台,以便在此行处理背景时脚本可以继续使用其余行?

我试过放一个&在行尾但我最终得到一些奇怪的行为(键击没有被正确处理)

1 个答案:

答案 0 :(得分:2)

将stdin从/ dev / null重定向,将stdout和stderr重定向到file:

cmd="/etc/config/users/pzsr7z/scripts-modified/scripts/wizard/enroller 10.193.22.236 22 WDCCRNMTS001 WDCCR-1-COMPT-R102 8"
ssh root@172.20.209.11 "$cmd" </dev/null >enroller.log 2>&1 & ssh_pid=$!

...然后,您可以等待它完成并阅读文件:

if wait "$ssh_pid"; then
  echo "Remote command exited with a successful exit status" >&2
else
  echo "Remote command exited with a failed exit status" >&2
fi
output=$(<enroller.log)