Source code for computer.paramiko_server

import sys, time
import paramiko
from linux_server import SizelessLinuxServer


[docs]class ParamikoServer(SizelessLinuxServer):
[docs] def receive(self): stdout = "" while self.session.recv_ready(): stdout += self.session.recv(sys.maxint) stderr = "" while self.session.recv_stderr_ready(): stderr += self.session.recv_sterr(sys.maxint) return stdout, stderr
[docs] def receive_all(self): stdout = "" stderr = "" while stdout[-2:] != '$ ': time.sleep(0.1) stdout2, stderr2 = self.receive() stdout += stdout2 stderr += stderr2 return stdout, stderr
[docs] def receive_each(self): stdout = "" while stdout[-2:] != '$ ': time.sleep(0.1) stdout, stderr = self.receive() yield stdout, stderr
[docs] def disconnect(self): self.client.close() self.connected = False
[docs] def run_command(self, command, root=None, path=None): "Returns (output, error) as strings." stdout = "" stderr = "" for stdout2, stderr2 in self.run_command_each(command, root, path): stdout += stdout2 stderr += stderr2 stdout = "\n".join(stdout.split('\r\n')[1:-1]) # drop command and prompt return stdout, stderr
[docs] def run_command_each(self, command, root=None, path=None): if root is not None: self.cwd(self.fullpath(root, path)) print command self.session.sendall(command + '\n') for stdout, stderr in self.receive_each(): yield stdout, stderr