python与常用文件传输协议
枫无眠
maple5218@163
关键词:python,linux,Ylmfos,Ubuntu,ftp,sftp,samba.
0引言
文件操作在我们测试和开发当中都有用到,本文总结了最常见的文件传输的方式。ftp—互联网中使用广泛的协议
Sftp—linux系统中使用最广泛的协议
Samba--liunux和windows这间使用最广泛的协议。
1ftp协议
ftp全称文件传输协议,是在互联网中使用广泛的协议。基于tcp协议,缺省端口21. 1.1ftplib--FTP protocol client
This module defines the class FTP and a few related items.The
FTP class implements the client side of the FTP protocol.You can use this to write Python programs that perform a variety of automated FTP jobs,such as mirroring other ftp servers.It is also used by the module urllib to handle URLs that use FTP.For more information on FTP (File Transfer Protocol),see Internet RFC959.
Here's a sample session using the ftplib module:
>>>from ftplib import FTP
>>>ftp=FTP('ftp.cwi.nl')#connect to host,default port
>>>ftp.login()#user anonymous,passwd anonymous@
>>&lines('LIST')#list directory contents
total24418
drwxrwsr-x5ftp-usr pdmaint1536Mar2009:48.
dr-xr-srwt105ftp-usr pdmaint1536Mar2114:32..
-rw-r--r--1ftp-usr pdmaint5305Mar2009:48INDEX
.
.
.
>>&binary('RETR README',open('README','wb').write)
'226Transfer complete.'
>>>ftp.quit()
The module defines the following items:
class FTP
[host[,user[,passwd[,acct]]]])
(
Return a new instance of the FTP class.When host is given,the method call connect(host)is made.W hen user is given,additionally the method call login(user, passwd,acct)is made(where passwd and acct default to the empty string when not given).
1.2API
Several methods are available in two flavors:one for handling
text files and another for binary files.These are named for the command which is used followed by"lines"for the text version or "binary"for the binary version.
FTP instances have the following methods:
set_debuglevel(lev el)
Set the instance's debugging level.This controls the amount of debugging output printed.
The default,0,produces no debugging output.A value of1produces a moderate amount of debugging
output,generally a single line per request.A value of2or higher produces the maximum amount of debugging output,logging each line sent and received on the control connection.
connect(host[,por t])
Connect to the given host and port.The default port number is21,as specified by the FTP protocol specification.It is rarely needed to specify a different port number.This function should be called only once for each instance;it should not be called at all if a host was given when the instance was created.All other methods can only be used after a connection has been made.
getwelcome()
Return the welcome message sent by the server in reply to the initial connection.(This message sometimes contains disclaimers or help information that may be relevant to the user.)
login([user[,passwd[,acct]]])
Log in as the given user.The passwd and acct parameters are optional and default to the empty string.If no user is specified,it defaults to'anonymous'.If user is
'anonymous',the default passwd is'anonymous@'.This function should be called only once for each instance,after a connection has been established;it should not be called at all if a host and user were given when the instance was created.Most FTP commands are only allowed after the client has logged in.
abort()
Abort a file transfer that is in progress.Using this does not always work,but it's worth a try.
sendcmd(comm and)
Send asimple command string to the server and return the response string.
voidcmd(comm and)
Send a simple command string to the server and handle the response.Return nothing if a response code in the range200-299is received.Raise an exception otherwise. retrbinary(comm and,callback[,m ax blocksize[,r est]])
Retrieve a file in binary transfer modem and should be an appropriate"RETR"
command:'RETR filename'.The callback function is called for each block of data received,with a single string argument giving the data block.The optional m ax block size argument specifies the maximum chunk size to read on the low-level socket object created to do the actual transfer(which will also be the largest size of the data blocks passed to callback).A reasonable default is chosen.r est means the same thing as in the transfercmd()method.
retrlines(com m and[,callback])
Retrieve a file or directory listing in ASCII transfer modem and should be an appropriate"RETR"command(see retrbinary())or a"LIST"command(usually just the string'LIST').The callback function is called for each line,with the trailing CRLF stripped.The default callback prints the line to sys.stdout.
set_pasv(boolean)
Enable``passive''mode if boolean is true,other disable passive mode.(In Python2.0and before,passive mode was off by default;in Python2.1and later,it is on by default.) storbinary(comm and,file[,block size])
Store a file in binary transfer modem and should be an appropriate"STOR"command: "STOR filename".file is an open file object which is read until EOF using its read()method in blocks of size blocksize to provide the data to be stored.The block size argument defaults to8192.Changed in version2.1:default for block size added. storlines(com m and,file)
Store a file in ASCII transfer mode m and should be an appropriate"STOR"command (see storbinary()).Lines are read until EOF from the open file object file using its readline()method to provide the data to be stored.
transfercmd(cm d[,rest])
Initiate a transfer over the data connection.If the transfer is active,send a"EPRT"or "PORT"command and the transfer command specified by cm d,and accept the connection.
If the server is passive,send a"EPSV"or"PASV"command,connect to it,and start the transfer command.Either way,return the socket for the connection.
If optional rest is given,a"REST"command is sent to the
server,passing rest as st is usually a byte
offset into the requested file,telling the server to restart
sending the file's bytes at the requested offset,skipping over the initial bytes.Note however that RFC959requires only that rest be a string containing characters in the printable range
from ASCII code33to ASCII code126.The transfercmd()method,
therefore,converts rest to a string,but no check is performed
on the string's contents.If the server does not recognize the
"REST"command,an error_reply exception will be raised.If this happens,simply call transfercmd()without a rest argument.
ntransfercmd(cmd[,r est])
Like transfercmd(),but returns a tuple of the data connection and the expected size of the data.If the expected size could not be computed,None will be returned as the d and r est means the same thing as in transfercmd().ignore subsequent bad blocks
nlst(argument[,...])
Return a list of files as returned by the"NLST"command.The optional argument is a directory to list(default is the current server directory).Multiple arguments can be used to pass non-standard options to the"NLST"command.
dir(argum ent[,...])
Produce a directory listing as returned by the"LIST"command,printing it to standard output.The optional ar gum ent is a directory to list(default is the currentserver directory).
Multiple arguments can be used to pass non-standard options to the"LIST"command.If the last argument is a function,it is used as a callback function as for retrlines();the default prints to sys.stdout.This method returns None.
rename(f rom name,toname)
Rename file f rom name on theserver to tonam e.
delete(filenam e)
Remove the file named filename from the server.If successful,returns the text of the response,otherwise raises error_perm on permission errors or error_reply on other errors.
cwd(pathname)
Set the current directory on the server.
mkd(pathname)
Create a new directory on the server.
pwd()
Return thepathname of the current directory on the server.
rmd(dir nam e)
Remove the directory named dirname on theserver.
size(filename)
Request thesize of the file named filename on theserver.On success,the size of the file is returned as an integer,otherwise None is returned.Note that the"SIZE"command is not standardized,but is supported by many common server implementations.
quit()
Send a"QUIT"command to the server and close the connection.This is the``polite''way to close a connection,but it may raise an exception of the server reponds with an error to the"QUIT"command.This implies a call to the close()method which renders the FTP instance useless for subsequent calls(see below).
close()
Close the connection unilaterally.This should not be applied to an already closed connection such as after a successful call to quit().After this call the FTP instance should not be used any more(after a call to close()or quit()you cannot reopen the connection by issuing another login()method).
2sftp协议(ssh)
ssh在linux/unix上最流行的远程控制方式,几乎所有的远程控制都是通过ssh进行的。ssh还有一个附属协议就是sftp协议,可以用来在网络上传输文件,而且是加密的。如果在linux/unix之间传输文件,通过sftp无疑是最安全,最方便的方式。
2.1安装paramiko
paramiko包给我们提供了ssh的访问接口,使用非常方便。
安装:
sudo apt-get install python-paramiko
即可。
2.2编程
主要介绍了几个客户端对像,来操作和获取服务器上的文件。
2.2.1SSHClient对象
SSHClinet对象用来描述与server这间的连接,建立时需要提供ip,port,用户名密码等信息。
一个简单的例子:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。