zoukankan      html  css  js  c++  java
  • 重载Python FTP_TLS 实现Implicit FTP Over TLS方式下载文件

    对于Python2.7来说,内置的FTP_TLS类并不支持Implicit FTP Over TLS加密方式的FTP Server操作,为支持Implicit FTP Over TLS加密方式,必须重载内置的FTP_TLS类,具体代码如下:

    import ftplib
    
    class FTP_TLS(ftplib.FTP_TLS):
        def __init__(self, host='', user='', passwd='', acct='', keyfile=None, certfile=None, timeout=180):
            ftplib.FTP_TLS.__init__(self, host, user, passwd, acct, keyfile, certfile, timeout)
        def connect(self, host='', port=0, timeout=-999):
            if host != '':
                self.host = host
            if port > 0:
                self.port = port
            if timeout != -999:
                self.timeout = timeout
    
            try:
                self.sock = socket.create_connection((self.host, self.port), self.timeout)
                self.af = self.sock.family
                self.sock = ssl.wrap_socket(self.sock, self.keyfile, self.certfile, ssl_version=ssl.PROTOCOL_TLSv1)
                self.file = self.sock.makefile('rb')
                self.welcome = self.getresp()
            except Exception as e:
                print e
            return self.welcome
        def download(self, remote_file_name, local_file_name):
            with open(local_file_name, 'wb') as fp:
                self.retrbinary('RETR %s' % remote_file_name, fp.write)

    下载的示例代码如下所示:

        host = 'XXX'
        port = 2222
        user = 'user'
        password = 'pass'
        local_dir = './data'
    
        ftp = FTP_TLS()
        ftp.connect(host, port)
        LOG.debug('begin to login')
        ftp.login(user, password)
        LOG.debug('login succeed')
        LOG.debug('welcome info = %s', ftp.getwelcome())
        ftp.prot_p()
    
        ftp.cwd('/crexbatch')
        ftp.download('People.zip', 'People.zip')
        ftp.retrlines('LIST')
        fnames = ftp.nlst()
        open('crexbatch.txt', 'wb').write('
    '.join(fnames))
  • 相关阅读:
    Swift学习笔记4
    《将博客搬至CSDN》
    传入一个integer数组,取出最大、最小值
    Centos7下完美安装并配置mysql5.6
    linux常用命令总结
    centos7下安装配置redis3.0.4
    VMware下centos桥接模式静态ip配置
    解决centos7下tomcat启动正常,无法访问项目的问题
    centos7系统下安装配置jdk、tomcat教程
    Apache+Tomcat+mod_jk实现负载均衡
  • 原文地址:https://www.cnblogs.com/Jerryshome/p/4801066.html
Copyright © 2011-2022 走看看