重载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(‘\r\n‘.join(fnames))
时间: 2024-08-02 10:33:04

重载Python FTP_TLS 实现Implicit FTP Over TLS方式下载文件的相关文章

Java中向ftp上传、下载文件

最近的一个项目跟ftp打交道很多,经常需要向ftp上传.下载文件,现在总结一下公共方法. 上传 /** * 文件上传 * * @param ip * host * @param port * 端口 * @param userName * 用户名 * @param passWord * 密码 * @param localpath * 上传文件在本地磁盘路径 * @param fileName * 文件名 * @param remotePath * 文件要上传到ftp服务器的路径 * @throws

Java 利用FTP上传,下载文件,遍历文件目录

Java实现FTP上传下载文件的工具包有很多,这里我采用Java自带的API,实现FTP上传下载文件.另外JDK1.7以前的版本与其之后版本的API有了较大的改变了. 例如: JDK1.7之前 JDK1.7 ftpClient = new FtpClinet() ftpClient = FtpClient.create(ip) ftpclient.login(user,password) ftpclient.login(user,null,password) ftpclient.binary()

FTP上传和下载文件的应用

FTP(File Transfer Protocol)协议主要用来在网络上进行文件传输.FTP通讯除了有一个默认的端口21外,还有其他端口,同城两个端口同时进行数据传输.一个是默认的端口(通常为21),主要进行控制连接,即进行命令协议及服务器端响应码的传输.另一个非标准端口主要进行数据,上传下载文件等.具体上传.下载代码如下 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept

Java通过FTP服务器上传下载文件的解决方案

对于使用文件进行交换数据的应用来说,使用FTP 服务器是一个很不错的解决方案.本文使用Apache Jakarta Commons Net(commons-net-3.3.jar)基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作. 关于FileZilla Server服务器的详细搭建配置过程,详情请见FileZilla Server安装配置教程.之前有朋友说,上传大文件(几百M以上的文件)到FTP服务器时会重现无法重命名的问题,但本人亲测上传2G的文件到F

python 实现ssh远程执行命令 上传下载文件

使用密码远程执行命令 [[email protected] script]# cat daramiko_ssh.py  #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import paramiko import sys,os host = sys.argv[1] user = 'root' password = 'ddfasdsasda2015' cmd = sys.argv[2] s = paramiko.SSH

java连接FTP、删除、下载文件的方法

本文共例举了二个连接FTP的方法,可以下载删除FTP上的文件,代码有点凌乱 JAVA自带的方法 import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.Input

winform通过FTP协议上传下载文件

上传文件:窗体代码 一次上传多个文件(grdAffixFilesList中需要上传的) private Boolean UploadFile() { string filename; int upCount=0; for (int i = 0; i < this.grdAffixFilesList.Rows.Count; i++) { filename = this.grdAffixFilesList.Rows[i].Cells["FILEPATH"].Text.ToString

Windows通过FTP上传、下载文件到Linux

FTP是通用协议,不区分系统.知道linux机器的IP.用户名和密码即可. 一.上传文件: 1.开始 -> 运行,输入cmd,回车 2.ftp  Linux机器的IP地址3.输入用户名.密码登陆ftp 4.binary 5.put  windows系统本地文件全路径  linux系统上的目标路径     (或:在cmd下进入到上传文件所在目录,进入Linux后进入目标目录,直接:put  目标文件) 6.Bye 注: (1)如果是文本文件,可以不用binary设置为二进制传输模式(默认文本模式,

使用批处理文件在FTP服务器 上传下载文件

1.从ftp服务器根目录文件夹下的文件到指定的文件夹下 格式:ftp -s:[配置文件] [ftp地址] 如:ftp -s:c:\vc\ftpconfig.txt   192.168.1.1 建立一个批处理文件:命名为 test.bat(名称可以随便,为了方便操作,直接命名为1.bat)  然后将上面的内容拷贝进去 ftpconfig.txt的文件内容是: testuser test get test.exe    C:\ftptest\testdownload.exe bye 解释: 前两条命