#!/usr/bin/python
'''
Created on 2015-06-09
@author: Administrator
'''
importpexpectimportos,sysfromoptparseimportOptionParserimportlogging,multiprocessingimportlogging.handlers#menueusage='%PRog [-h][-s Servers][-c CMDS][--version]'parser=OptionParser(usage=usage,version='Hu 2.0_20150609')
parser.add_option('-s','--Server',dest='server',default='ip.txt',help='The Server Info')
parser.add_option('-c','--CMDS',dest='cmd',default='pwd',help='You wann to execute commands')
(options,args)=parser.parse_args()printoptions.server,options.cmd
logger=logging.getLogger()
logger.setLevel(logging.DEBUG)
ch=logging.StreamHandler()
cc=logging.handlers.RotatingFileHandler('log.txt', maxBytes = 1024*1024, backupCount = 5)
formatter=logging.Formatter("%(asctime)s-%(name)s-%(levelname)s %(message)s")
ch.setFormatter(formatter)
cc.setFormatter(formatter)
logger.addHandler(ch)
logger.addHandler(cc)#ssh functionsdefconnect(ip,username,passWord,port,prompt=']#'):try:
ssh_newkey='Are you sure you want to continue connecting'child=pexpect.spawn('ssh'+username +'@'+ip+'-p'+port,maxread=5000)
child.logfile=fout
i=child.expect([prompt,'assword:*',ssh_newkey,'refused',pexpect.TIMEOUT,'key.*? failed'])printi#if not False:#print child.before,child.afterifi==0:passelifi==1:printpassword
child.sendline(password)elifi==2:
child.sendline('yes')elifi==4:raiseException('Error TIMEOUT!')elifi==3:print'Connect refused'elifi==5:printchild.before,child.after
os.remove(os.path.expanduser('~')+'/.ssh/known_hosts')
child.expect('#')printchild.after,child.before
child.sendline(options.cmd)
child.expect('#')printchild.before,child.afterprint'The command %s result is:'%options.cmdprintchild.beforeexceptException,e:
logger.error("Connect Error")#check -s isn't exitsifos.path.exists(options.server):
filename=options.serverpasselse:print'Please check %s and ip.txt is exits'%options.server
exit(-1)#executefout=file('mylog.txt','w')forlineinopen(filename):
ip,user,passwd,port=line.strip().split()print'*'*50print'The follow ip is %s:'%ip
p=multiprocessing.Pool(processes=4)
result=p.apply_async(connect,[ip,user,passwd,port])printresult.get()#connect(ip,user,passwd,port)
E-mail:362299908@QQ.com