使用python paramiko进行ssh分叉

使用python paramiko进行ssh分叉,python,linux,ssh,fork,paramiko,Python,Linux,Ssh,Fork,Paramiko,我正在使用python模块Paramiko以ssh方式连接到linux设备并执行两个C程序。 Program1在触发器上的DAQ设备上生成信号。它等待触发器并在5秒后终止。 程序2生成触发器 下面是我的Python类: class test: server = "localhost" username = "root" password = "12345" def ssh (self, cmd = ""): ssh = paramiko.S

我正在使用python模块Paramiko以ssh方式连接到linux设备并执行两个C程序。 Program1在触发器上的DAQ设备上生成信号。它等待触发器并在5秒后终止。 程序2生成触发器

下面是我的Python类:

class test:
    server = "localhost"
    username = "root"
    password = "12345"
    def ssh (self, cmd = ""):
            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect(self.server,username=self.username,password=self.password)
            stdin, stdout, stderr = ssh.exec_command(cmd)
            result = stdout.read().splitlines()
            if len(result)!= 0:
                return result
            else:
                return -1

test.ssh("program1")
test.ssh("program2")
问题是program2是在program1已经终止之后执行的,所以它不会生成任何内容。 有没有一种方法可以使program2比program1运行得更快? 我试过了

test.ssh("program1 &")
test.ssh("program2") 

但是没有用。如果我在两个终端外壳中手动运行这些程序,那么它可以正常工作。有什么想法吗?

您可以尝试在同一个SSH会话中运行它们:
test.SSH(“program1&program2”)
。这样,您就不必为您所做的
测试的所有设置和拆卸支付两倍的费用。ssh

可以使用线程或多处理在不同会话中执行这两个程序

import multiprocessing

input = ["program1","program2"]   

for i in range(2):
    p = mutiprocessing.Process(target=test.ssh,args=(input[i],))
    p.start()
    processlist.append(p)

for p in processlist:
    p.join()

您可以尝试使用python线程,我不需要这种行为。我希望随时运行test.ssh(“program2”),而不是在test.ssh(“program1”)之后立即运行