python访问ftp服务器 linux中搭建ftp服务器

在Linux环境下设置FTP服务器和用Python实现FTP客户端的交互介绍FTP文件传输协议(FTP File Transfer Protocol)是英文的简称。它基于传输层协议TCP,用于在互联网上双向传输(上传和下载)文件。和大多数互联网服务一样,FTP也是客户端/服务器系统,需要FTP服务器和FTP客户端的配...

在Linux环境下设置FTP服务器和用Python实现FTP客户端的交互介绍

FTP文件传输协议(FTP File Transfer Protocol)是英文的简称。它基于传输层协议TCP,用于在互联网上双向传输(上传和下载)文件。和大多数互联网服务一样,FTP也是客户端/服务器系统,需要FTP服务器和FTP客户端的配合才能完成文件传输。

FTP协议使用两个TCP连接,一个是命令链接,用于FTP客户端和服务器之间传递命令;另一个是数据链路,用于上传或下载数据。FTP服务器/客户端架构如图所示:

FTP有两种工作模式:端口主动模式和PASV被动模式。无论哪种方式,首先客户端需要主动与远程主机上的FTP服务器建立命令链接。

端口连接过程:客户端从任意非特权端口M (m >: 023,0到1023用于绑定特定服务)连接。向FTP服务器的命令端口(默认为21)发送连接请求。服务器接受连接并建立命令链接。当需要传输数据时,客户端在命令链上向FTP服务器发送FTP命令“port M+1”。然后客户端开始**M+1端口,服务器会从自己的数据端口(默认为20)连接到客户端指定的数据端口(M+1),建立数据链路传输数据。

在PASV模式下,命令连接和数据连接都由客户端发起。当FTP连接打开时,客户端会打开两个任意的非特权本地端口(m >: 023和M +1)。第一个端口连接到服务器的端口21以建立命令链路,这与端口模式相同,但第二个端口以不同于端口模式的方式建立数据链路。当需要传输数据时,客户端向服务器提交PASV命令。因此,服务器将打开任意非特权端口(n >: 023),并向客户端发送PASV N命令。然后客户端发起从本地端口M+1到服务器端口N的连接,建立数据链路传输数据。

因为使用FTP传输文件时必须先登录,所以只有在远程主机上获得相应的权限后,才能上传和下载文件。除非您有用户ID和密码,否则无法传输文件。互联网上有成千上万的FTP主机,不可能要求每个用户在每台主机上都有一个账号,这违背了互联网的开放性。所以匿名FTP就是为了解决这个问题而产生的。

通过匿名FTP机制,用户可以连接到远程主机上传和下载文件,而无需注册帐户。系统管理员建立了一个名为anonymous的特殊用户ID,互联网上的任何人都可以在任何地方使用它。

构建FTP服务器的Linux平台

通常,在各种Linux发行版中,默认的FTP软件是vsftp。Vsftpd(非常安全的FTP守护程序)是一个运行在类Unix操作系统上的FTP服务器程序。这里我们用vsftp在Linux平台的ubuntu发行版上搭建一个ftp服务器,可以用Python客户端测试。

(1)使用#rpm -qa |grep vsftpd命令检查是否安装了vsftpd软件,或者使用#sudo apt-get install vsftpd命令安装vsftpd软件。

(2)使用#netstat -tnl命令检查端口服务是否打开。默认情况下,FTP服务器打开端口21。

(3)使用# servicevsftpd Start | stop | restart命令启动、停止和重新启动FTP。

(4)4)FTP的配置文件位于/etc/vsftpd/目录下,包括用户禁止登录列表ftpusers和user_list,主配置文件vsftpd.conf使用命令#sudo gedit /etc/vsftpd.conf修改配置文件vsftpd.conf,去掉配置项前的#号启动配置,修改配置文件后重新启动服务。

与匿名登录相关的配置如下:

ANOnymous_enable=YES #控制是否允许匿名用户登录,YES允许匿名登录,no不允许。默认值为是。

Write_enable=YES #是否允许登录用户拥有写权限。是一个全局设置,默认值为YES。

No _ anonymous _ password = yes #如果启用了此功能,则在使用匿名登录时不会询问密码。默认值是“否”

Ftp_username=ftp#定义匿名登录的用户名。默认值是ftp。

anon_root=/var/ftp

#使用匿名登录时,登录目录。默认值是/var/ftp。注意ftp目录不能是777的权限属性。

匿名上传启用=是

#如果设置为YES,则允许匿名记录器拥有上载文件(而不是目录)的权限,这仅在write_enable=YES时有效。前提是匿名用户必须有写上层目录的权限。默认值是“否”

anon _ world _ readable _ only =是

#如果设置为YES,则允许匿名记录器下载可读文件(可以下载到本地计算机进行读取,但不能在FTP服务器中直接打开进行读取)。默认值为是。

anon _ mkdir _ write _ enable =是

#如果设置为YES,则允许匿名记录器拥有添加目录的权限,这仅在write_enable=YES时有效。前提是匿名用户必须有写上层目录的权限。默认值是“否”

anon _ other _ write _ enable =是

#如果设置为“是”,则允许匿名记录器拥有比上传或创建目录更多的权限,如删除或重命名。(如果anonymous _ upload _ enable = no,匿名用户不能

上传文件,但您可以删除或重命名现有文件。如果anon_mkdir_write_enable=NO,则匿名用户不能上传或创建新文件夹,但可以删除或重命名现有文件夹。)默认值是“否”..

Chown_uploads=YES #设置是否更改匿名用户上传的文件(而不是目录)的所有者。默认值是“否”

Chown_username=username #设置匿名用户上传的文件(不是目录)的所有者名称。不建议将其设置为root。

anon_u***sk=022

#设置匿名记录器添加或上传文件时的掩码值。默认值为077。如果u***sk是022,那么创建一个权限为666的文件,文件的实际权限是666-022=***4。

拒绝电子邮件启用=是

#要启用此功能,您必须提供一个包含电子邮件地址内容的文件/etc/vsftpd/banner_e***ils。如果您使用匿名登录,您将被要求输入电子邮件地址。如果您输入电子邮件地址

在这个文件里,是不允许进入的。默认值是“否”

banned _ e***il _ file =/etc/vsftpd/banner _ e***ils #这个文件用来输入邮件。

地址,该文件仅在deny_e***il_enable=YES时使用。如果您使用匿名登录,您将被要求输入电子邮件。

地址,如果输入的电子邮件地址在此文件中,则不允许输入。

其他主要配置如下:

Listen= NO #服务器**。你想以独立的方式收听服务吗?

Local_enable=YES #允许本地用户访问

Local _ u***sk = 022 #上的本地文件权限,默认为077

#dirmessage_enable=YES #允许访问文件夹

Xerlog _ enable = yes #允许FTP日志记录

On connect _ from _ port _ 20 = yes #启用20号端口作为数据传输端口。

Xlog _ enable = yes #激活上传和下载的日志。

#xferlog_std_for***t=yes #使用标准日志格式。

#ftpd_banner=XXXXX #欢迎消息

Local_root=/var/*** #本地登录时登录的目录。

pasv_enable=YES #

如果是,则使用PASV工作模式;如果设置为否,则使用端口模式。默认值是YES,即使用PASV工作模式。

Pasv_min_port=30000 #在Pasv工作模式下,可用于数据连接的端口范围内最大的端口,0表示任意端口。默认值为0。

Pasv_***x_port=30999 #在Pasv工作模式下,可用于数据连接的端口范围内最小的端口,0表示任意端口。默认值为0。

(5)使用#sudo userdel uftp命令删除用户,使用# sudo apt-getremove-purge vsftpd命令彻底删除软件及相关文件。

(6)匿名登录目录的权限设置。默认情况下,匿名登录的根目录是/var/ftp(实际配置为/home/ftp)。出于安全考虑,该目录默认不允许设置为777权限,否则FTP将无法匿名访问。当我们想要匿名上传文件时,我们需要设置其他用户的写权限。

sudo chmod o+w /home/ftp

更改ftp目录的主要权限从默认的root权限更改为匿名ftp权限。参数-r表示启动递归处理和修改目录中所有文件的权限,包括修改子目录中文件的权限。修改后的ftp帐户可以访问ftp文件夹。

sudo chown ftp /home/ftp -R

sudo ls -l /home/

总剂量12

DrwXR-XR-x2 FTP Root 4096 2月15日19:09 ftp

DRWXR-XR-X2UFTP根4096年2月15日16:23 uftp

DrwXR-XR-X40元宵元宵4096二月十五日19: 22元宵

还可以使用vsftp在嵌入式Linux平台的LED发行版上搭建ftp服务器。

(1)将开发板连接到外部网络,通过opkg命令安装vsftp。

root @元宵:/etc/init.d# opkg更新

root@Yuanxiao:/etc/init.d# opkg安装vsftpd

(2)配置/etc/vsftpd.conf文件。配置选项的含义和方式与上面提到的ubuntu发行版上的vsftpd相同。如果匿名登录,需要设置/etc/vsftpd.conf文件的相应选项。

(3)更改/etc/vsftpd.conf文件的权限。

启动vsftpd进程时,将会提示一个错误,指示配置文件不属于正确的用户。

root @元宵:~# /etc/init.d/vsftpd start

500糟糕:配置文件不属于正确的用户,或者不是一个文件

解决方法是设置/etc/vsftpd.conf文件的访问用户(当前为root用户)

root @元宵:~# chown root /etc/vsftpd.conf

root @元宵:~# ls -l /etc/vsftpd.conf

-rwxrwxrwx 1 root root 840 Feb 15 13:48/etc/vsftpd . conf

(4)启动和停止vsftpd。

/etc/init.d/vsftpd start

/etc/init.d/vsftpd stop

基于Python的客户端FTP程序实例

# -*- coding: utf-8 -*-#python 27from ftplib import FTPftp = FTP() #创建FTP对象timeout = 30 port = 21ftp.connect('192.168.1.188',port,timeout) # 连接FTP服务器ftp.login('UserName','888888') # 使用帐号登录print ftp.getwelcome() # 获得欢迎信息ftp.cwd('file/test') # 设置FTP远程目录下当前路径list = ftp.nlst() # 获取目录下的文件列表 for name in list: print name#从FTP服务器下载文件bufsize=1024#设置的缓冲区大小filename="/usr/share/app/uboot.bin" #需要下载的文件及本地的存放位置file_handle=open(filename,"wb").write #以写模式在本地打开文件ftp.retrbinary("RETR uboot.bin",file_handle,bufsize) #下载服务器上的文件并写入本地文件#删除远程文件ftp.delete("art.bin") # 删除FTP服务器文件#上传文件至FTP服务器bufsize=1024#设置的缓冲区大小filename="/usr/share/app/***in.py" #需要上传的文件及本地的存放位置file_handle=open(filename,"rb") #以读模式在本地打开文件ftp.storbinary("STOR ***in.py",file_handle,bufsize) #将本地文件上传到FTP服务器ftp.quit()# 退出FTP服务器

本文来自不择手段投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/552137.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 05-18
下一篇 05-18

相关推荐

  • python插件开发 python数据库编程入门

    Jupyter Notebook是一个非常棒的教学、探索和编程环境,但它也以功能不足而闻名。幸运的是,有许多方法可以改进这个好工具,例如Jupyter笔记本扩展工具。迷你版课程在命令提示符下运行以下命令:pip install jupyter_contrib_nbextensions && jupyter contrib nbexten

    2023-07-22 12:13:01
    865 0
  • python serial库函数 python serial接收读取数据

    对于学习Python的人来说,我想大家对模块os都比较熟悉,另外一个密切相关的模块是sys,但是sys很少使用,所以今天我们就来说说这两个模块的作用。/sys/Sys模块包含一组非常实用的服务,包括许多函数方法和变量。用于处理Python运行时配置和资源,使其能够与前一个程序之外的系

    2023-07-20 15:34:02
    741 0
  • python小游戏编程游戏 python简单小游戏代码

    序今天周一就给大家安利一下用Python做一个简单的类”飞机大战“游戏,我们快乐的开始吧~影响开发工具Python版本:3.6.4相关模块:Pygame模块;以及Python自带的一些模块。环境建设安装Python并将其添加到环境变量中。pip可以安装所需的相关模块。原理简介游戏规则介

    2023-07-20 12:55:01
    554 0
  • python获取网页数据违法吗 解密python技术合法性评估

    近年来,开发者因使用爬虫技术而锒铛入狱的案例越来越多。2015年,某公司指使5名程序员使用网络爬虫获取某公司服务器的公交车行驶信息、到站信息等数据。这五个程序员承担连带责任。2019年,某公司高管张某、宋某、侯某、郭某利用爬虫技术,对服务器存储的视频资料进行非法抓

    2023-07-20 02:00:01
    621 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信