Shell Scripting ssh执行命令

时间:2018-06-09 17:09:57

标签: linux shell scripting

我不知道如何在远程设备上通过ssh执行这个特定的组合shell脚本命令。

_wrapLine

发生的错误是:

#!/bin/bash cmd="" command="restart" case "$command" in restart) cmd+="pkill -f fileA.py;" cmd+="python3 -u fileA.py >> fileA.log &" ;; *) echo "Unknown command" esac cmd=$(ssh root@foobar $cmd)

我知道整个字符串被解释为一个命令,但这不是我想要的。

我感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您确定要粘贴正确的代码吗? pkill错误消息来自-u
-U个选项。请先检查一下。

接下来,您缺少报价会导致问题。在shell替换变量之后,你有了这个:

cmd=$(ssh root@foobar pkill -f fileA.py;python3 -u fileA.py >> fileA.log &)

因此,您要在远程系统上终止该进程,并在本地系统上启动它。

我认为你真的需要这个:

case "$command" in
    restart)
        cmd="pkill -f fileA.py; nohup python3 -u fileA.py >> fileA.log & disown"
        ;;
    *)
        echo "Unknown command"
esac


cmd=$(ssh root@foobar bash -c "$cmd")

nohupdisown允许后台进程在shell退出后继续运行。