# -*- coding: utf-8 -*- """ " " " @time: 2022-11-11 21:47 " " sftp 下载 """ import logging import paramiko logger = logging.getLogger(__name__) class SftpGetFile(object): def __init__(self): # 获取本地图片保存位置 self.local_path = '/data/files' # 获取远程oss图片保存位置 self.remote_path = '/upload' host = '192.168.1.19' username = 'sftp_username' password = 'sftp_password' port = 22 logger.info('sftp 连接初始化...start') self.sock_sftp = paramiko.Transport((host, port)) # logger.info("如果是使用rsa认证方式,则需要加载本地私钥") # self.private_key = paramiko.RSAKey.from_private_key_file('/home/test01/.ssh/id_rsa') # self.sf.connect(username=self.username, pkey=self.private_key) self.sock_sftp.connect(username=username, password=password) self.sftp_client = paramiko.SFTPClient.from_transport(self.sock_sftp) def call_back_after(self, size, file_size): """ 回调函数, 可以用来处理,文件下载完成后的其它操作 :param size: :param file_size: :return: """ if size == file_size: print("文件处理完成") def sftp_get_file(self): file_name = 'Walmart-DroneUp-Delivery-Package.jpeg' try: self.sftp_client.get( self.remote_path + '/' + file_name, self.local_path + '/' + file_name, callback=self.call_back_after ) logger.info("文件处理完成") except Exception as e: logger.error("下载报错file_name:%s\n报错内容:%s", file_name, e) return True def __del__(self): self.sock_sftp.close() if __name__ == '__main__': put_sftp = SftpGetFile() put_sftp.sftp_get_file()
Python paramiko下载sftp上的文件
最新推荐文章于 2024-04-22 16:07:30 发布