[英]forking ssh using python paramiko
我正在使用python模塊Paramiko ssh到linux box並執行兩個C程序。 程序1在觸發器上在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")
問題是在終止program1之后正在執行program2,因此它不會生成任何東西。 有沒有一種方法可以比program1更快地運行program2? 我努力了
test.ssh("program1 &")
test.ssh("program2")
但無濟於事。 如果我在兩個終端外殼中手動運行這些程序,則可以正常工作。 有什么想法嗎?
可以使用線程或多處理來在不同的會話中執行這兩個程序
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()
您可以嘗試在同一SSH會話中運行它們: test.ssh("program1 & program2")
。 這樣,您將不需要為test.ssh
所有設置和拆卸支付兩次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.