python - 使用 python paramiko fork ssh

标签 python linux ssh fork paramiko

我正在使用 Python 模块 Paramiko 通过 SSH 连接到 Linux 机器并执行两个 C 程序。 Program1 在触发时在 DAQ 设备上生成信号。它等待触发器并在 5 秒后终止。 Program2 生成触发器。

这是我的 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") 

但无济于事。如果我在两个终端 shell 中手动运行这些程序,那么它就可以正常工作。有什么想法吗?

最佳答案

可以使用线程或多进程在不同的 session 中执行这两个程序

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 - 使用 python paramiko fork ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20005790/

相关文章:

python - Python 中点画派绘画的随机化算法

git - 使用适用于 Windows 的 Git 凭据管理器保存 GIT 凭据 - 不工作

c - Send() 消息包含 TCP 套接字中的某些字段 (C Linux)

linux - inotifywait 运行守护进程模式给出错误无法初始化 inotify

linux - Linux 上的 CFS 优先级调度程序

bash - 远程主机(通过Cron的SSH)上捕获的命令输出为空

git - 向 GitHub 添加 SSH key 的目的是什么?

Python IMAP - 使用 BASE64 编码和 KOI8-R 字符集解码文本

javascript - 如何使用 jinja2 和 google app engine 将数组放入属性中以供 javascript 读取

python - (result, consumed) = self._buffer_decode(data, self.errors, final) 错误