Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8304752
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类: Python/Ruby

2009-03-24 23:46:48

前两天用tcl实验了一个简单的ftp服务器.转念一想,应该python也是可以的.但是官方好像没有提供相关的库.在网上查了一下,在google code上面有提供相关的库.而且这个库的功能算是比较强大了,从感觉上讲,要比tcl实现的要漂亮.简单写一下步骤:
1).从下载最新的库.我的实验环境为server为fedora10,client为vista;
2).安装该库:sudo python setup.py install,如果安装的时候有问题,好像说是makefile找不到,可以安装python-devel,然后就可以安装成功;
3).安装成功后,可以在解压的包里找到basic_ftpd.py,用力运行一下吧.
4).在本机上做测试,好像有点问题,一是说目录未建好,另一个是端口权限问题.我将里面的os.getcwd()改成一个自己用的目录,将端口改成非防火墙禁止的窗口.
5).放一下修改后的FTP服务器代码,明天再深入研究一下其它的高级内容吧.

#!/usr/bin/env python
# basic_ftpd.py

"""A basic FTP server which uses a DummyAuthorizer for managing 'virtual
users', setting a limit for incoming connections.
"
""
import os
from pyftpdlib import ftpserver
if __name__ == "__main__":
    # Instantiate a dummy authorizer for managing 'virtual' users
    authorizer = ftpserver.DummyAuthorizer()

    # Define a new user having full r/w permissions and a read-only
    # anonymous user
    #authorizer.add_user('user', '12345', os.getcwd(), perm='elradfmw')
    authorizer.add_user('user', '12345', '/home/riverbird/temp', perm='elradfmw')
    #authorizer.add_anonymous(os.getcwd())
    authorizer.add_anonymous('/home/riverbird/temp')

    # Instantiate FTP handler class
    ftp_handler = ftpserver.FTPHandler
    ftp_handler.authorizer = authorizer

    # Define a customized banner (string returned when client connects)
    ftp_handler.banner = "pyftpdlib %s based ftpd ready." %ftpserver.__ver__

    # Specify a masquerade address and the range of ports to use for
    # passive connections. Decomment in case you're behind a NAT.
    #ftp_handler.masquerade_address = '
151.25.42.11'
    #ftp_handler.passive_ports = range(60000, 65535)

    # Instantiate FTP server class and listen to 0.0.0.0:21
    #address = ('
', 21)
    address = ('
192.168.1.103',8000)

    ftpd = ftpserver.FTPServer(address, ftp_handler)

    # set a limit for connections
    ftpd.max_cons = 256
    ftpd.max_cons_per_ip = 5
    # start ftp server
    ftpd.serve_forever()

阅读(3356) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-12-05 05:40:24

福娃免费空间http://h.8wa.com

chinaunix网友2009-03-28 07:13:08

一直以为写个FTP服务至少N百行代码,没想就这么点就可以了