如何利用 ssh 从 Python 永久启动远程进程?

问题描述 投票:0回答:1

我想通过 ssh 在远程计算机上从一个 python 程序启动另一个 python“Server.py”程序。

该程序通过以下方式在 bash shell 中本地启动:

    nohup ./Server.py 1>Server.log 2>&1 &

没有任何问题。为了完整起见,Server.log 显示:

    nohup: ignoring input

即使我关闭 bash-shell,进程也能正常运行:

   pi       26119     1  0 20:15 ?        00:00:00 /home/pi/.pyenv/versions/3.11.4/bin/python ./Server.py

如果尝试通过以下方式远程启动它:

    cmd = ["ssh", target, "nohup "+ Conf.FILES[0] + " 1>./Server.log 2>&1 &"]
    print("cmd=", cmd)
    try:
       result = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout[:-1]

远程进程以 print 语句开始,等于:

    cmd= ['ssh', '<MyInternetServerName>', 'nohup ./Server.py 1>./Server.log 2&1 &']

但我收到意外的 Python 错误(在 Server.log 中):

    File "./Server.py", line 102
       def handle_client(self, connfd: socket.socket):
                                     ^
    SyntaxError: invalid syntax

我认为,我在远程做与本地相同的事情,但我找不到我的错。 有什么想法,为什么会失败或者要检查什么?

python ssh raspberry-pi subprocess
1个回答
0
投票

可能与这个问题重复。

您似乎使用的是 Python 2。请确保在运行脚本时强制执行 Python 3。我。将其添加到脚本的顶部:

#/usr/bin/env python3
© www.soinside.com 2019 - 2024. All rights reserved.