FTP、SFTP文件下载内容校验

 

描述:

从FTP、SFTP下载的文件做MD5码校验,文件名和MD5码值存放在表格里,表格位置在FTP、SFTP服务器上。

os模块只能遍历本地目录/文件,需要先连接FTP、SFTP服务器,将表格下载到本地localpath,再将localpath传入exl_file_md5()函数,读取表格内容

 

1、python连接FTP、SFTP遍历目录;

2、下载目录下的Excel文件,并读取Excel文件内容,获取到Excel里的文件名和MD5码值;

3、将表格中读取出的内容以字典形式{filename:MD5}返回。

import paramiko
import xlrd
from ftplib import FTP

def sftp_down_exlfile(user,password,host,port,remotepath,localpath): t
=paramiko.Transport((host,int(port))) t.connect(username=user,password=password) sftp=paramiko.SFTPClient.from_transport(t) local_path="" for file in sftp.listdir(remotepath): if file[-5:]==".xlsx": sftp.get(os.path.join(remotepath+file),os.path.join(localpath+file)) local_path = os.path.join(localpath+file) t.close() data=exl_file_md5(local_path) return data def ftp_down_exlfile(user,password,host,port,remotepath,localpath): ftp=FTP() ftp.connect(host=host,port=int(port)) ftp.login(user=user,passwd=password) bufsize=1024 files=ftp.nlst(remotepath) ftp.cwd(remotepath)  # 切换目录,注:切换到下载的文件的远程目录 for file in files: if file[-5:]==".xlsx": fp=open(localpath,'wb') ftp.retrbinary('RETR '+file, fp.write, bufsize) fp.close() ftp.close() data=exl_file_md5(localpath) return data def exl_file_md5(exlpath): """ read Excel filename and MD5code """ try: excel=xlrd.open_workbook(exlpath) sheet=excel.sheets()[1] nrows=sheet.nrows file_md5 = {} for i in range(nrows): file_md5[sheet.row_values(i)[1]] = sheet.row_values(i)[2]return file_md5 except Exception: pass

 

转载于:https://www.cnblogs.com/shenbuer/p/8716339.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Restful是一种基于HTTP协议的设计风格,用于构建分布式的、可扩展的网络应用。而SFTP(SSH File Transfer Protocol)则是一种安全的文件传输协议,它使用SSH(Secure Shell)协议进行数据加密和身份验证。 要通过Restful方式下载SFTP文件,我们可以使用如下步骤: 1. 首先,我们需要在服务器端实现一个接口,用于接收客户端的下载请求。这个接口应该包含文件的相关信息,如文件名、路径等。 2. 当客户端发送下载请求时,我们可以使用一个Restful客户端库,如HttpClient,向服务器发送HTTP请求。在请求中,我们需要包含SFTP文件的相关信息,如地址、端口、用户名、密码等。 3. 服务器接收到请求后,可以使用一个SFTP客户端库,如JSch,连接到SFTP服务器,并进行身份验证。 4. 连接成功后,服务器可以根据请求中的文件信息,在SFTP服务器上找到对应的文件,并将其下载到本地。 5. 下载完成后,服务器可以将文件的字节流通过HTTP响应返回给客户端。客户端可以通过读取响应的字节流,将文件保存到本地。 需要注意的是,Restful下载SFTP文件的过程中,我们需要保证数据的安全性和完整性。因此,建议在传输过程中使用TLS/SSL等加密机制,确保数据的加密传输;同时,在传输完成后,可以使用MD5或SHA等算法对文件进行校验,确保文件的完整性。 总结起来,通过Restful方式下载SFTP文件,需要在服务器端实现一个接口,接收下载请求,并使用SFTP客户端库连接到SFTP服务器进行文件下载,最后将文件通过HTTP响应返回给客户端。同时,为了保证数据的安全性和完整性,可以使用加密机制和校验算法来加强传输过程的安全性。 ### 回答2: 在使用Restful API下载SFTP(SSH File Transfer Protocol)文件时,可以使用以下步骤: 1. 首先,需要确保已经建立了与SFTP服务器的连接,并拥有对应的凭证(用户名和密码或SSH密钥)。 2. 再次,需要通过Restful API发送一个HTTP GET请求来获取文件。请求中需要包含文件的URI路径,以及必要的认证信息。 3. 在服务器端,Restful API的处理程序将接收到此请求,并根据提供的路径查找相应的文件。这可能涉及到SFTP客户端库的使用,以连接到SFTP服务器,并使用提供的凭证进行身份验证。 4. 当找到文件后,可以将其读取为字节流,并将其作为HTTP响应返回给客户端。 5. 客户端收到响应后,可以将响应内容保存为文件,或者根据需要进行进一步的处理。 需要注意的是,使用Restful API下载SFTP文件时,需要确保服务器端拥有合适的权限,以便访问SFTP服务器和相应的文件。此外,还需要处理可能的错误情况,例如文件不存在或权限不足等。 综上所述,使用Restful API下载SFTP文件涉及到建立SFTP连接、发送HTTP GET请求、在服务器端处理请求并返回文件等步骤。通过合理的流程和逻辑,可以实现高效、安全地从SFTP服务器下载文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值