如何等待我的远程脚本完成,这是由 paramiko 模块触发的
How to wait for my remote script complete , which is triggered by paramiko module
我试图在我的远程机器上执行一个 python 脚本
远程命令需要 1 分钟才能完成 [这是一个 python 脚本,只是循环打印一些东西]
我看到我的线程抛出命令并立即出来。
我希望我的线程等到远程脚本完成。
有办法吗?
class Thread_cls(threading.Thread):
def __init__(self,tid,tname,ip,script):
threading.Thread.__init__(self)
print 'kkk'
self.thread_id=tid
self.thread_name=tname
self.ip=ip
self.script=script
def run(self):
print "ENTERED HERE"
stdin,stdout,stderr=self.connect_to_linux_vm(self.ip).exec_command(self.script)
exit_status = stdout.channel.recv_exit_status()
print "out of ssh command"
#pass
def connect_to_linux_vm(self,ip,uname=None,password=None):
ssh_linux = paramiko.SSHClient()
ssh_linux.set_missing_host_key_policy(
paramiko.AutoAddPolicy())
ssh_linux.connect(ip, username=uname,
password=pwd)
return ssh_linux
obj1=Thread_cls(1,'T1','x.x.x.x',"python TEST.py")
obj1.start()
obj1.join()
换行
stdin, stdout, stderr = self.connect_to_linux_vm(self.ip).exec_command(self.script)
到两行:
ssh = self.connect_to_linux_vm(self.ip)
stdin, stdout, stderr = ssh.exec_command(self.script)
否则从 connect_to_linux_vm()
返回的 SSHClient
对象将在调用 exec_command()
后立即销毁,因为没有其他变量仍在引用它。
我试图在我的远程机器上执行一个 python 脚本 远程命令需要 1 分钟才能完成 [这是一个 python 脚本,只是循环打印一些东西]
我看到我的线程抛出命令并立即出来。 我希望我的线程等到远程脚本完成。
有办法吗?
class Thread_cls(threading.Thread):
def __init__(self,tid,tname,ip,script):
threading.Thread.__init__(self)
print 'kkk'
self.thread_id=tid
self.thread_name=tname
self.ip=ip
self.script=script
def run(self):
print "ENTERED HERE"
stdin,stdout,stderr=self.connect_to_linux_vm(self.ip).exec_command(self.script)
exit_status = stdout.channel.recv_exit_status()
print "out of ssh command"
#pass
def connect_to_linux_vm(self,ip,uname=None,password=None):
ssh_linux = paramiko.SSHClient()
ssh_linux.set_missing_host_key_policy(
paramiko.AutoAddPolicy())
ssh_linux.connect(ip, username=uname,
password=pwd)
return ssh_linux
obj1=Thread_cls(1,'T1','x.x.x.x',"python TEST.py")
obj1.start()
obj1.join()
换行
stdin, stdout, stderr = self.connect_to_linux_vm(self.ip).exec_command(self.script)
到两行:
ssh = self.connect_to_linux_vm(self.ip)
stdin, stdout, stderr = ssh.exec_command(self.script)
否则从 connect_to_linux_vm()
返回的 SSHClient
对象将在调用 exec_command()
后立即销毁,因为没有其他变量仍在引用它。