Advertisement
Guest User

Untitled

a guest
Sep 10th, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. from paramiko import client
  2.  
  3. class SSH_Agent:
  4.  
  5. def __init__(self, server_name, username = getpass.getuser(), password = None, connection_timeout = CONNECTION_TIMEOUT):
  6. self.ssh_agent = client.SSHClient()
  7. self.ssh_agent.set_missing_host_key_policy(client.AutoAddPolicy())
  8. self.ssh_agent.connect(server_name, username = username, password = password if password is not None else username, timeout = connection_timeout)
  9.  
  10.  
  11. def execute_command(self, command, out_streams = [sys.stdout], err_streams = [sys.stderr], poll_intervals = POLL_INTERVALS):
  12. stdin, stdout, stderr = self.ssh_agent.exec_command(command)
  13. channel = stdout.channel
  14. stdin.close()
  15. channel.shutdown_write()
  16.  
  17. while not channel.closed or channel.recv_ready() or channel.recv_stderr_ready():
  18. got_data = False
  19. output_channels = select.select([channel], [], [], poll_intervals)[0]
  20.  
  21. if output_channels:
  22. channel = output_channels[0]
  23. if channel.recv_ready():
  24. for stream in out_streams:
  25. stream.write(channel.recv(len(channel.in_buffer)))
  26. stream.flush()
  27. got_data = True
  28.  
  29. if channel.recv_stderr_ready():
  30. for stream in err_streams:
  31. stream.write(channel.recv_stderr(len(channel.in_stderr_buffer)))
  32. stream.flush()
  33. got_data = True
  34.  
  35. if not got_data
  36. and channel.exit_status_ready()
  37. and not channel.recv_ready()
  38. and not channel.recv_stderr_ready():
  39. channel.shutdown_read()
  40. channel.close()
  41. break
  42.  
  43. return channel.recv_exit_status()
  44.  
  45. tput: No value for $TERM and no -T specified
  46.  
  47. stdin, stdout, stderr = self.ssh_agent.exec_command(command, get_pty = True)
  48.  
  49. tput: No value for $TERM and no -T specified
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement