Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. import time
  2. import sys
  3. import paramiko
  4. import socket
  5. import re
  6. import multiprocessing
  7. host = open('/home/user/hosts', 'r')
  8. hosts = host.readlines()
  9. host.close()
  10. def connect_ssh(host, queue):
  11. try:
  12. remote_conn_pre = paramiko.SSHClient()
  13.  
  14. remote_conn_pre.set_missing_host_key_policy(
  15. paramiko.AutoAddPolicy())
  16.  
  17. remote_conn_pre.connect(host, username=username, password=password, look_for_keys=False, allow_agent=False, timeout=5)
  18. time.sleep(0.2)
  19.  
  20. print("SSH connection established to %s" % host)
  21. remote_conn = remote_conn_pre.invoke_shell()
  22. print("Interactive SSH session established")
  23.  
  24. ###здесь операции с хостами####
  25.  
  26. queue.put({host: output})
  27.  
  28. except (socket.gaierror,socket.timeout,TimeoutError):
  29. print("Could not connect to %s n" % host)
  30. sys.exit(1)
  31.  
  32.  
  33. def send_commands(function):
  34. processes = []
  35. queue = multiprocessing.Queue()
  36. for l in range(len(hosts)):
  37. p = multiprocessing.Process(target = function, args = (hosts[l], queue))
  38. p.start()
  39. processes.append(p)
  40. for p in processes:
  41. p.join()
  42.  
  43. results = []
  44. for p in processes:
  45. results.append(queue.get())
  46. return results
  47.  
  48. send_commands(connect_ssh)
  49.  
  50. Traceback (most recent call last):
  51. File "/usr/lib/python3.5/multiprocessing/process.py", line 249, in _bootstrap
  52. self.run()
  53. File "/usr/lib/python3.5/multiprocessing/process.py", line 93, in run
  54. self._target(*self._args, **self._kwargs)
  55. File "scripts/qos_add_mp.py", line 24, in connect_ssh
  56. remote_conn_pre.connect(host, username=username, password=password, look_for_keys=False, allow_agent=False, timeout=5)
  57. File "/usr/local/lib/python3.5/dist-packages/paramiko/client.py", line 341, in connect
  58. server_key = t.get_remote_server_key()
  59. File "/usr/local/lib/python3.5/dist-packages/paramiko/transport.py", line 670, in get_remote_server_key
  60. raise SSHException('No existing session')
  61.  
  62. NUM_PROCESS = 10
  63. queue = multiprocessing.Queue()
  64. results = []
  65.  
  66. while hosts:
  67. processes = []
  68. for _ in range(NUM_PROCESS):
  69. if not hosts:
  70. break
  71. p = multiprocessing.Process(target=function, args=(hosts.pop(), queue))
  72. p.start()
  73. processes.append(p)
  74. for p in processes:
  75. p.join()
  76. results.append(queue.get())
  77. return results
  78.  
  79. import multiprocessing
  80.  
  81. hosts = 'h1', 'h2', 'h3'
  82.  
  83. def connect_ssh(host):
  84. # ...
  85. return host
  86.  
  87. if __name__ == '__main__':
  88. with multiprocessing.Pool(processes=4) as pool:
  89. results = pool.map(connect_ssh, hosts)
  90. print(results)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement