import time
import paramiko
import os
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
def conn(hostname,port,username,passwd):
'''检测连接是否成功'''
try:
ssh.connect(hostname,port,username,passwd)
ssh.close()
return('%s %s连接成功\n'%(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())),hostname))
except TimeoutError as e:
ssh.close()
return ('%s %s连接超时\n'%(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())),hostname))
with open('account','r') as f:
a = f.readlines()
for i in a:
'''遍历文件,其中account为存储ip,port,passwd的文件,result文件为输出的结果'''
account = i.split(',')
hostname =account[0].strip()
port = account[1].strip()
username= account[2].strip()
passwd = account[3].strip()
conn = conn
out = conn(hostname,port,username,passwd)
with open('result','a',encoding='utf-8') as q:
q.write(out)
多线程
import time
import paramiko
import os
import threading
import queue
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
def conn(hostname,port,username,passwd):
'''检测连接是否成功'''
try:
ssh.connect(hostname,port,username,passwd)
ssh.close()
return('%s %s连接成功\n'%(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())),hostname))
except:
ssh.close()
return ('%s %s有毛病,大佬快去看看\n'%(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())),hostname))
acc = queue.Queue()
lock =threading.RLock()
thread_list = []
def queue_put(a):
'''把文件中的内容读取到缓存中,即队列中'''
with open(a,'r') as f:
a = f.readlines()
for i in a:
acc.put(i)
def write_res(account):
'''把结果写入文件中'''
semaphore.acquire()
account = account.split(',')
hostname =account[0].strip()
port = account[1].strip()
username= account[2].strip()
passwd = account[3].strip()
out = conn(hostname, port, username, passwd)
lock.acquire()
with open('result','a',encoding='utf-8') as q:
q.write(out)
lock.release()
semaphore.release()
queue_put('account')
count = acc.qsize()
semaphore = threading.BoundedSemaphore(10)
for i in range(count):
t = threading.Thread(target=write_res,args=(acc.get(),))
t.start()
while threading.active_count() != 1:
pass
else:
print('----all threads done---')