2016-04-29 13 views
2

現在、ssh(paramiko)を使用してLinuxマシン上でリモートでコマンドを実行するクラスを作成しています。以下は、私がLinuxでリモートコマンドを実行中にエラーを処理する方法

def connect(self): 
    ssh = paramiko.SSHClient() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    ssh.connect(self.ip, port=self.port, username=self.user,password=self.password,timeout=self.timeout) 
    time.sleep(10) 
    return ssh 

def runCommands(self,commands): 
    ssh=self.connect() 
    channel = ssh.invoke_shell() 
    time.sleep(10) 
    for command in commands: 
     wait=0 
     while channel.send_ready()!=True: 
      wait+=1 
      time.sleep(self.timeout) 
      if wait==5: 
       return 0 
     channel.send(command+'\n') 
    channel.send("exit\n") 
    return 1 

を使用していたコードであるコマンドは、例えば、エラーに実行する場合、私は「MKDIR A」を使用する場合は、ここに私の質問は:「ファイルにエラーが存在し、」私はそれを処理することができますどのように、検出されました。私はchannel.recv(buff_size)を使ってみましたが、ここでの問題はエラーと通常のメッセージを区別できないことです。事前に

おかげ

答えて

1

channel.recv_exit_status()が実行されたコマンドのリターンコードを取得するために使用することができます。あなたはthis paramikoのドキュメントを参照することができます。

関連する問題