2016-05-17 17 views
0

Ich versuche, einen Prozess Pool auf Windows zu arbeiten, aber nachdem ich das Passwort gefragt, fragt es mich wieder das Passwort.python multish Pool auf Windows

import os 
import sys 
import paramiko 
import getpass 
import socket 
from multiprocessing import Pool 


def processFunc(hostname): 
handle = paramiko.SSHClient() 
handle.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
handle.connect(hostname, username=user, password=pw) 
print("child") 
stdin, stdout, stderr = handle.exec_command("show clock") 
cmdOutput = "" 
while True: 
    try: 
cmdOutput += stdout.next() 
    except StopIteration: 
    break 
    print("Got output from host %s:%s" % (hostname, cmdOutput)) 
    handle.close() 

user = "sup" 
f= open('csip.txt','r') 
    hostnames = [] 
for line in f: 
    hostname = line.strip() 
    hostnames.append(hostname) 
pw = getpass.getpass("Enter ssh password:") 

if __name__ == "__main__": 
    pool = Pool(processes=4) 
    pool.map(processFunc, hostnames, 1) 
pool.close() 
pool.join() 

Mache ich etwas falsch? Das Skript sollte Hostnamen aus der TXT-Datei lesen, das Kennwort abrufen und dann den Prozesspool aufrufen.

Antwort

0

Die folgenden Werke -

Aber ich will helfen, sie verbessern. Ich möchte den Benutzernamen und das Passwort nicht fest codieren.

import os 
import sys 
import paramiko 
from multiprocessing import Pool 

#Globals 
Hostnames = [] 
f= open('csip.txt','r') 
for line in f: 
hname = line.strip() 
Hostnames.append(hname) 


def processFunc(Hostname): 
    handle = paramiko.SSHClient() 
    handle.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    handle.connect(Hostname, username="sup", password="123") 
    print("child") 
    stdin, stdout, stderr = handle.exec_command("show platform | i unknown") 
    cmdOutput = "" 
    while True: 
    try: 
     cmdOutput += stdout.next() 
    except StopIteration: 
     break 
print("Got output from host %s:%s" % (Hostname, cmdOutput)) 
handle.close() 


if __name__ == "__main__": 
    pool = Pool(processes=9) 
    pool.map(processFunc, Hostnames, 1) 
    pool.close() 
    pool.join()