Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import sys
- import paramiko
- import socket
- import re
- import multiprocessing
- host = open('/home/user/hosts', 'r')
- hosts = host.readlines()
- host.close()
- def connect_ssh(host, queue):
- try:
- remote_conn_pre = paramiko.SSHClient()
- remote_conn_pre.set_missing_host_key_policy(
- paramiko.AutoAddPolicy())
- remote_conn_pre.connect(host, username=username, password=password, look_for_keys=False, allow_agent=False, timeout=5)
- time.sleep(0.2)
- print("SSH connection established to %s" % host)
- remote_conn = remote_conn_pre.invoke_shell()
- print("Interactive SSH session established")
- ###здесь операции с хостами####
- queue.put({host: output})
- except (socket.gaierror,socket.timeout,TimeoutError):
- print("Could not connect to %s n" % host)
- sys.exit(1)
- def send_commands(function):
- processes = []
- queue = multiprocessing.Queue()
- for l in range(len(hosts)):
- p = multiprocessing.Process(target = function, args = (hosts[l], queue))
- p.start()
- processes.append(p)
- for p in processes:
- p.join()
- results = []
- for p in processes:
- results.append(queue.get())
- return results
- send_commands(connect_ssh)
- Traceback (most recent call last):
- File "/usr/lib/python3.5/multiprocessing/process.py", line 249, in _bootstrap
- self.run()
- File "/usr/lib/python3.5/multiprocessing/process.py", line 93, in run
- self._target(*self._args, **self._kwargs)
- File "scripts/qos_add_mp.py", line 24, in connect_ssh
- remote_conn_pre.connect(host, username=username, password=password, look_for_keys=False, allow_agent=False, timeout=5)
- File "/usr/local/lib/python3.5/dist-packages/paramiko/client.py", line 341, in connect
- server_key = t.get_remote_server_key()
- File "/usr/local/lib/python3.5/dist-packages/paramiko/transport.py", line 670, in get_remote_server_key
- raise SSHException('No existing session')
- NUM_PROCESS = 10
- queue = multiprocessing.Queue()
- results = []
- while hosts:
- processes = []
- for _ in range(NUM_PROCESS):
- if not hosts:
- break
- p = multiprocessing.Process(target=function, args=(hosts.pop(), queue))
- p.start()
- processes.append(p)
- for p in processes:
- p.join()
- results.append(queue.get())
- return results
- import multiprocessing
- hosts = 'h1', 'h2', 'h3'
- def connect_ssh(host):
- # ...
- return host
- if __name__ == '__main__':
- with multiprocessing.Pool(processes=4) as pool:
- results = pool.map(connect_ssh, hosts)
- print(results)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement