`
xiaobian
  • 浏览: 589170 次
  • 来自: 北京
社区版块
存档分类
最新评论

连接FTP服务器取回某个目录下的数据.

阅读更多

#-*-coding:utf8 -*-
#!/usr/bin/env python
from ftplib import FTP
import time
import os
import logging
import logging.handlers
class Log():
    def __init__(self):
        pass
    ''' 记录日志到文件 '''
    def logger(self,logfile):
        logger = logging.getLogger()
        #handler = logging.FileHandler(logfile) #记录日志到单个文件
        #rhandler = logging.handlers.RotatingFileHandler(filename=logfile,mode='a',maxBytes=1024*1024*1,backupCount=10) #记录日志到文件
        thandler = logging.handlers.TimedRotatingFileHandler(filename=logfile,when='D',interval=1,backupCount=10)#保留十天的日志
        formatter = logging.Formatter('[%(levelname)s] \t  %(asctime)s %(filename)s %(filename)s  %(message)s')
        thandler.setFormatter(formatter)
        logger.addHandler(thandler)
        logger.setLevel(logging.NOTSET)
        return logger

log = Log()
logger = log.logger("c://log/temp.log")
logger.info("Start Log log")

class HandleFtp():
    def __init__(self):
        pass
    ''' check network status result==1 : network is not ok result==0: network is ok '''
    def checkNetwork(self,netaddress):
        #处理  Packets: Sent = 4, Received = 2, Lost = 2 (50% loss), 状况
        time.sleep(2)
        result = os.system('ping '+netaddress)
        return result
    def login(self,ip,port,loginame,passwd,dir):
        ftp=FTP()
        #ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
        logger.info("+++++++++++++++++++ Ftp Server Info +++++++++++++++++")
        logger.info(" ftp server's ip "+ip)
        logger.info(" ftp server's port "+str(port))
        logger.info(" ftp server's loginame "+loginame);
        logger.info(" ftp server's passwd "+passwd)
        logger.info(" ftp server's dir "+dir)
        logger.info("+++++++++++++++++++ Ftp Server Info +++++++++++++++++")
        ftp.connect(ip,port) #连接
        ftp.login(loginame,passwd) #登录,如果匿名登录则用空串代替即可
        #print ftp.getwelcome() #显示ftp服务器欢迎信息
        ftp.cwd(dir) #选择操作目录
        self.bufsize = 1024 #设置缓冲块大小
        return ftp
    def handleData(self,ftp,ftpaddress,port,loginame,passwd,dir):
         while(True):
            if self.checkNetwork(ftpaddress) == 1:
                logger.error("network happens errors ftpaddress "+ftpaddress)
                time.sleep(10 * 1)
            else:
                print "++++++++++++++++++++++++++++++++"
                print ftp
                try:
                    filelist = ftp.nlst()
                except Exception:
                    pass
                finally:
                    ftp = self.login(ftpaddress, port,loginame, passwd, dir)
              
                print ftp.nlst()
                for file in filelist:
                    filename=file
                    filename1 = "c:\\temp\\"+filename
                    print filename
                    print filename1
                    try:
                        file_handler = open(filename1,'wb') #以写模式在本地打开文件
                    except Exception:
                        logger.exception(" open file "+filename1+" hanppen exception"+Exception)
                    try:   
                        ftp.retrbinary('RETR '+filename,file_handler.write,self.bufsize) #接收服务器上文件并写入本地文件
                    except Exception:
                        logger.exception(" get data "+filename+" happen exception "+Exception)
                    filename1 = ""
                    filename = ""
                    try:
                        file_handler.close()
                    except Exception:
                        logger.exception("close file "+filename+" happen exception "+Exception )
                time.sleep(10);
    def quit(self,ftp):
        ftp.quit() #退出ftp服务器 
#ftp.set_debuglevel(0) #关闭调试


if __name__ == "__main__":
    ftp = HandleFtp()
    ftpl = ftp.login('10.232.75.46', 21,'anonymous', '', '/')
    ftp.handleData(ftpl,'10.232.75.46', 21,'anonymous', '', '/')
   
   

分享到:
评论

相关推荐

    Linux下FTP服务器的安装和配置详细.pdf

    FTP 服务器在 Linux 系统中的安装和配置是一个非常重要的 tema,因为它提供了文件传输协议(FTP)的服务,使用户可以通过 FTP 客户端与远程机器传输文件数据,下载或上传最新的软件。在本文中,我们将详细介绍 FTP ...

    [FTP服务器端软件].Serv.U.FTP.Server.Gold.v10.4.0.0.incl.serial

    通过使用Serv-U,用户能够将任何一台PC 设置成一个FTP 服务器,这样,用户或其他使用者就能够使用FTP 协议,通过在同一网络上的任何一台PC与FTP 服务器连接,进行文件或目录的复制,移动,创建,和删除等。...

    LinuxFTP服务器配置实验报告整理.pdf

    本实验报告旨在指导学生掌握 Linux 下的 FTP 服务器配置方法,熟悉 FTP 客户端工具的使用,并掌握常见的 FTP 服务器的故障排除。实验中,我们将使用 Vsftpd 服务器,配置 FTP 服务器,实现连接限制、日志记录、消息...

    Windows Server 2012 R2 服务器建立FTP访问,及无法与服务器建立连接相关问题解决.docx

    Windows Server 2012 R2 服务器建立 FTP 访问及无法与服务器建立连接相关问题解决 FTP(File Transfer Protocol)是一种常用的文件传输协议,用于在网络中传输文件。Windows Server 2012 R2 提供了一种简单的方式来...

    FTP服务器.pptx

    FTP服务器是提供文件存储和访问服务的系统,允许用户通过FTP客户端连接到服务器,上传、下载或管理文件。以下是对FTP服务器的详细解释: 一、FTP服务器概述 FTP服务器的核心工作流程涉及两个主要端口:20和21。端口...

    FTP服务器架设--架设篇.doc

    - 主动模式(Active Mode):FTP服务器主动发起数据连接。 - 被动模式(Passive Mode):FTP客户端请求数据连接。 2. **FTP的安全性问题**: - 明文传输可能导致数据泄露。 - 使用SFTP或FTPS增强安全性。 3. *...

    FTP服务器配置教程[文].pdf

    总之,配置FTP服务器涉及多个方面,包括服务器的基本信息、连接限制、安全策略以及目录权限。正确配置FTP服务器能为开发者提供一个安全、高效的文件传输环境,促进团队协作。在实际操作中,应根据具体的业务需求和...

    ftp服务器.rar

    被动模式下,服务器告诉客户端一个开放的端口号,由客户端发起数据连接。 5. **会话结束**:完成所有操作后,客户端关闭控制连接,结束FTP会话。 易语言FTP服务器源码可能会涉及以下组件和技术: - **连接管理**...

    Python语言实现FTP服务器的方法共2页.pdf.zip

    5. **数据连接**:FTP协议使用两个连接:控制连接处理命令,数据连接处理实际的数据传输。ftplib库会自动处理大部分数据连接的建立和关闭,但有时可能需要自定义数据通道的行为。 6. **多线程或异步处理**:为了...

    WIN7+ISS增加FTP服务器+远程控制设置可用.pdf

    - 输入站点名称,选择物理路径,例如"D:/Download"作为FTP服务器的主目录。 - 配置FTP绑定,指定IP地址、端口号(通常使用21),可以选择SSL设置,如不使用SSL则选择"无"。 - 点击 "完成",FTP站点搭建完毕。 2....

    Delphi 连接FTP读取文件数据

    通过这个过程,你可以构建起Delphi应用连接FTP服务器并读取文件数据的能力,这对于实现接口或者数据同步等功能非常有用。在实际开发中,还需要考虑错误处理、重试机制以及安全性问题,比如使用SSL/TLS加密连接来增强...

    IIS 6.0架设ftp服务器教程(图片教程).doc

    4. 指定FTP服务的主目录,这将是用户通过FTP连接后能看到的根目录,可以是服务器上的某个共享文件夹。 5. 选择FTP站点使用的IP地址,通常设置为“所有未分配”,以允许任何IP地址连接。 6. 分配一个端口,FTP服务...

    FTP服务器架设教程—基础篇.doc

    首先,架设FTP服务器的基本条件包括:互联网连接(至少ADSL 512 Kbps),足够的硬件性能(例如CPU PⅢ 450 MHz以上,256MB SDRAM以上内存),以及适当的操作系统(如Windows 98/Me/NT/2000/XP)。对于操作系统的选择...

    FTP服务器 FTP服务器

    FTP服务器基于TCP/IP协议栈,使用两个端口进行通信:20号端口用于数据传输,21号端口用于控制连接。当客户端连接到FTP服务器时,会通过21号端口建立控制连接,发送登录信息和命令。一旦验证通过,服务器会在一个随机...

    ftp服务器搭建ftp服务器搭建.doc

    5. 配置 FTP 服务器:打开控制面板——管理工具——Internet 信息服务(IIS)管理器——FTP 站点,创建一个需要认证的 FTP 站点,让互联网登陆 FTP 服务时需要认证才能与 FTP 服务器取得信任连接。 6. 权限设置:在...

    Python-python上传excel表格数据到ftp服务器

    在Python编程中,将Excel表格数据上传到FTP服务器是一项常见的任务,特别是在数据处理和文件共享的场景下。这里,我们主要关注如何使用Python的库来实现这个功能,以及FTP网络编程的基本概念。 首先,我们需要了解...

    FTP服务器架设--管理篇.doc

    "FTP站点"选项卡允许管理连接用户,设置最大连接数(非Windows 2000服务器版限制为10个),并设置连接超时,防止用户占用过多资源。通过"当前会话"可以查看并断开用户的连接。 **Serv-U服务器的管理** 相比之下,...

    ASP.NET源码——FTP服务器源码(C245).zip

    3. **Socket编程**:FTP服务器需要使用Socket来建立和管理与客户端的连接,发送和接收数据。Socket是.NET Framework提供的低级别网络通信接口,可以用来实现TCP和UDP协议。 4. **状态管理和会话控制**:FTP服务器...

    Python语言实现FTP服务器的方法共2页.pdf.zi

    1. **FTP服务器的构建基础**:首先,我们需要理解FTP协议的基本工作原理,包括命令和响应的交互、数据连接的建立等。FTP协议定义了一系列控制命令,如USER、PASS、CWD、LIST、STOR等,用于客户端和服务器之间的通信...

    linux下lftp连接ftp服务器上传下载命令.docx

    Linux 下 lftp 连接 FTP 服务器上传下载命令 概述 LFTP(Linux File Transfer Program)是一个功能强大的 FTP 客户端程序,可以在 Linux 操作系统中使用,用于连接 FTP 服务器,上传和下载文件。LFTP 的主要特点是...

Global site tag (gtag.js) - Google Analytics