这是实现一个通过ssh到主机,执行命令并产生log文件,通过检查log文件并下载ftp上的结果进行对比产生报告,并将报告上传到ftp服务器。其中的ftp上传和下载函数
ftpdir = cf["ftp"]["ftpdir"]
ftpurl = cf["ftp"]["ftpurl"]
ftpport = cf["ftp"]["ftpport"]
ftpuser = cf["ftp"]["ftpuser"]
ftppasswd = cf["ftp"]["ftppasswd"]
path = ftpdir+device+'/'+url+'/'
ftp=FTP()
#ftp.set_debuglevel(2)
try:
ftp.connect(ftpurl,ftpport)#连接
ftp.login(ftpuser,ftppasswd)#登录,如果匿名登录则用空串代替即可
except Exception:
print "FTP连接失败,请检查网络和配置文件"
return "error"
try:
ftp.cwd(path)
bufsize = 1024#设置缓冲块大小
file_handler = open(filename,'rb')#以读模式在本地打开文件
ftp.storbinary('STOR %s' % os.path.basename(filename),file_handler,bufsize)#上传文件
file_handler.close()
ftp.quit()
except Exception:
print filename, "FTP上传文件失败,请检查配置文件是否正确"
return "error"
def Ftp_Down(filename,device,url,cf):
ftpdir = cf["ftp"]["ftpdir"]
ftpurl = cf["ftp"]["ftpurl"]
ftpport = cf["ftp"]["ftpport"]
ftpuser = cf["ftp"]["ftpuser"]
ftppasswd = cf["ftp"]["ftppasswd"]
if url=="":
path = ftpdir+device+'/'
else:
path = ftpdir+device+'/'+url+'/'
ftp=FTP()
#ftp.set_debuglevel(2)
try:
ftp.connect(ftpurl,ftpport)#连接
ftp.login(ftpuser,ftppasswd)#登录,如果匿名登录则用空串代替即可
except Exception:
print "FTP连接失败,请检查网络和配置文件"
return "error"
try:
ftp.cwd(path)
bufsize = 1024#设置缓冲块大小
file_handler = open(filename,'wb') #以写模式在本地打开文件
ftp.retrbinary('RETR %s' %os.path.basename(filename),file_handler.write,bufsize)#下载文件
file_handler.close()
ftp.quit()
except Exception:
print filename, "FTP下载文件失败,请检查配置文件是否正确"
return "error"