【问题标题】:Start a background shell script from python从 python 启动后台 shell 脚本
【发布时间】:2019-03-16 01:40:09
【问题描述】:

我想连接一台远程机器并通过 python 在该机器上运行后台脚本。

我试过了:

os.system("ssh root@10.0.0.1 \' nohup script.sh & \')

但它似乎不起作用。如果我把 nohup 放在 script.sh 中,然后简单地运行

os.system("ssh root@10.0.0.1 \' script.sh \'")

nohup 命令在这两种情况下都不起作用。

我很困惑为什么会这样,有没有人知道如何从 python 做后台工作,或者这样做是不可能的?

【问题讨论】:

    标签: python bash


    【解决方案1】:

    您遇到了什么样的错误?你使用的是什么版本的 Python?

    你应该看看这个Python subprocess - run multiple shell commands over SSH

    import subprocess
    sshProcess = subprocess.Popen(["ssh", "root@10.0.0.1"],
                                   stdin=subprocess.PIPE, 
                                   stdout = subprocess.PIPE,
                                   universal_newlines=True,
                                   bufsize=0)
    sshProcess.stdin.write("nohup script.sh &")
    

    【讨论】:

    • 感谢您的回答。我使用的是 Python 2.7.10,子进程也不起作用。我根本没有收到错误消息,奇怪的是我无法获取“nohup.out”文件。
    【解决方案2】:

    例如,你有一个本地脚本(python、bash 等。这里我用 python 脚本演示你)

    首先在本地创建一个 python 文件。让我们打个招呼吧.py

    # 'hello.py'
    import os
    print os.system('hostname')
    

    其次是一个 python 脚本,它将在远程机器上执行上述 hello.py

    import pathos
    copy = pathos.core.copy('hello.py', destination='abc.remote.com:~/hello.py')
    exec = pathos.core.execute('python hello.py', host='.remote.com')
    print exec.response()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 2018-10-15
      • 2011-04-05
      • 1970-01-01
      相关资源
      最近更新 更多