2017-07-08 8 views
0

私のリモートマシンでpythonスクリプトを実行しようとしていました リモートコマンドが完了するまでに1分かかる[pythonスクリプトです。ループで]paramikoモジュールによって起動されたリモートスクリプトの完了を待つ方法

私のスレッドがコマンドをスローしてすぐに出てくるのを見ています。 スレッドがリモートスクリプトが完了するまで待ちます。

これには方法がありますか?

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() 
+0

plzあなたの質問が解決したと思われる場合は、回答を受け入れることを検討してください。 – pynexj

+0

ああ、申し訳ありませんが、私はそれを逃した。完了!!!!! – syam

答えて

1

変更

stdin, stdout, stderr = self.connect_to_linux_vm(self.ip).exec_command(self.script) 

〜2行の行:それはexec_command()を呼び出した後、まだreferenceing他のVARSはありませんので、

ssh = self.connect_to_linux_vm(self.ip) 
stdin, stdout, stderr = ssh.exec_command(self.script) 

がそうでなければconnect_to_linux_vm()から返さSSHClientオブジェクトはすぐに破壊されてしまいますそれに。

+0

Worked !!ありがとう!! – syam

関連する問題