python-使用sftp传输文件
前言
在Python中,paramiko是实现ssh2协议的一个模块。在服务器上基本都是使用ssh远程,如果我们需要传输文件,也可以直接使用基于ssh服务的sftp传输,不需要另外开启文件传输的服务。
安装paramiko
pip install paramiko
SFTPClient类
根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。
1、from_transport方法连接
classmethod from_transport(cls,t)
参数说明:
t:一个已通过验证的传输对象
例如:
import paramiko
client = paramiko.Transport(('127.0.0.1',22))
client.connect( username="opcai",password="secure123")
sftp = paramiko.SFTPClient.from_transport(client)
2、get方法下载
get( remotepath, localpath, callback=None)
参数说明:
remotepath:需要下载的远程文件
localpath:本地存储路径
callback:获取接收与总传输字节数
例如:
sftp.get(remotepath="/tmp/aaaaa",localpath="/tmp/23")
3、put方法
put(localpath,remotepath,callback=None,confirm=True)
参数说明:
localpath:上传源文件的本地路径
remotepath:目标路径
callback:获取接收与总传输字节数
confirm:上传完毕后是否调用stat()方法,以便确认文件大小
sftp.put(localpath="/tmp/23",remotepath="/tmp/aaaaa")
4、mkdir方法创建目录
mkdir(path, mode=o777)
path:远程路径
mode:默认是8进制的777,但是在系统上一般是以umask为准,这个被忽略。如果强制设置mode,则umask会被屏蔽。
5、删除操作
rmdir(path) :删除目录
remove(path) :删除文件
6、rename方法重命名
rename(oldpath,newpath)
7、查看文件或者目录信息
stat(path):获取文件信息
listdir(path):获取目录列表
8、切换、查看目录
getcwd():查看当前所在目录
chdir(path):切换当前目录
9、修改文件或者目录的权限、用户组
chmod(path , mode) :修改目录或者文件权限
chown(path,uid ,gid):修改目录或者文件的用户组
例子
import paramiko
client = paramiko.Transport(('127.0.0.1',22))
client.connect( username="opcai",password="secure123")
sftp = paramiko.SFTPClient.from_transport(client)
sftp.get(remotepath="/tmp/aaaaa",localpath="/tmp/23")
sftp.put(localpath="/tmp/23",remotepath="/tmp/a1")
# sftp.remove(path="/tmp/python")
#sftp.mkdir(path="/tmp/python")
#sftp.rmdir(path="/tmp/python")
# sftp.rename("/tmp/a1","/tmp/appp")
print(sftp.stat("/tmp/a1"))
print(sftp.listdir("/tmp"))
# print(sftp.listdir_attr())
print(sftp.getcwd())
sftp.chdir("/tmp/")
print(sftp.getcwd())
sftp.close()
client.close()