QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2798|回复: 0
打印 上一主题 下一主题

Python SFTP 详细使用

[复制链接]
字体大小: 正常 放大

1198

主题

4

听众

2976

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 16:20 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
SFTP(SSH File Transfer Protocol)是一种基于SSH协议的安全文件传输协议。Python提供了paramiko库来实现SFTP功能。本文将详细介绍如何使用Python和paramiko库进行SFTP操作。( Y' h5 \" i: Q' V3 `

/ G, \3 ]. L+ \% U" w8 y, ?" Q8 x) q安装paramiko库
) j* u" |1 X3 ~9 C- o首先,我们需要安装paramiko库。在命令行中执行以下命令:
+ ?+ |& X; k3 I' N% ~  j3 c" H0 ]. e( }% \5 m
pip install paramiko* T+ a! y( ?% E5 G
连接到SFTP服务器0 O- f+ S8 [; U1 o
接下来,我们需要连接到SFTP服务器。首先,导入paramiko库并创建一个SSHClient对象:: M0 m: ?+ A; r" o3 K& g
5 e& g& c5 C0 r. ?$ J7 \
import paramiko) u" n* O) u* ?; ~' ^; |, z& D
2 `- w- r$ w( A0 V+ L8 P
ssh = paramiko.SSHClient()
; `0 C5 g! d7 X4 v
8 v1 T! g6 R) j. q+ T然后,我们需要设置SSHClient对象的策略,用于接受SFTP服务器的主机密钥。在开发环境中,可以使用AutoAddPolicy策略,它会自动接受所有主机密钥。在生产环境中,应该使用更安全的策略:
, U5 r+ [: Y! [0 {$ I- m+ ]
3 q* Y0 X  e$ J' `# }ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())4 F3 H$ P1 d& o: D) C
: L+ }, j$ X, N
接下来,使用connect方法连接到SFTP服务器。需要提供服务器的主机名、端口、用户名和密码:
, R) b: C7 h* U; t; f; Q% k
* |" X+ S8 ]2 ]' e5 k% Pssh.connect('hostname', port=22, username='username', password='password')+ z1 u# I/ c7 S$ X* S3 F9 P
$ Z! {6 o& {" A1 Z# v& I) Q
创建SFTP会话8 a# K' |9 c1 Y# {: U8 A
成功连接到SFTP服务器后,我们需要创建一个SFTP会话。通过SSHClient对象的open_sftp方法创建一个SFTPClient对象:
3 @! a! q, i7 X& X# m# x- ^: C" Z* w' j* V
sftp = ssh.open_sftp(), ?1 k& @& v9 J) t- L$ M

) l! }: Z7 U- ]6 T- I! \上传文件
7 J# w' n! C& g. F现在,我们可以开始进行SFTP操作了。首先,让我们看看如何上传文件。使用SFTPClient对象的put方法可以将本地文件上传到远程服务器上。需要提供本地文件路径和远程服务器的目标路径:8 X4 Y" c; G) J4 Q

% n8 R& M. S2 s9 _& i7 usftp.put('local_file_path', 'remote_file_path')# ^3 V! a2 L8 \9 l& N- z0 o' k* G
4 R3 ^6 t. C2 S
下载文件
. \& `) u4 d$ d) ?) I- }除了上传文件,我们还可以从远程服务器上下载文件。使用SFTPClient对象的get方法可以将远程服务器上的文件下载到本地。需要提供远程服务器文件路径和本地目标路径:$ M1 Y3 C1 q2 ~0 Q/ I

" T7 ^2 l6 I7 u* A( d. Ysftp.get('remote_file_path', 'local_file_path')
9 {: n6 e, x% D5 k* o
' D- ?) i- W$ w4 g* D" D3 m1 x列出文件和目录. t  B+ M: U* x  i% f. ^
使用SFTPClient对象的listdir方法可以列出指定目录下的文件和目录。需要提供目标路径:5 k8 k6 A5 }5 |9 ~4 z, O( |

% v  l5 }3 O& H3 V3 @+ zfiles = sftp.listdir('directory_path')/ ^4 H1 w5 Y+ ?

3 @" |* A1 h2 F- R1 c) R3 W删除文件! Z3 n3 u5 u' b  ?9 R
使用SFTPClient对象的remove方法可以删除指定的文件。需要提供文件路径:
) w5 Q) Y& ]0 k; W# I3 S, W6 N
* i4 D0 [7 S1 z8 Rsftp.remove('file_path')4 @7 A5 D* A  @: k' X6 p

& I% l) ?# w! ]9 t: V关闭SFTP会话和SSH连接! J/ C4 l, [2 L0 T  {! o6 u
完成SFTP操作后,我们需要关闭SFTP会话和SSH连接。分别调用SFTPClient对象的close方法和SSHClient对象的close方法:* O' p2 A3 W# X( h' j! {& }

- J2 {/ I3 J4 R: ^- X0 vsftp.close()
9 H- S  B) O. N9 k( i6 }: rssh.close(). \1 p! q7 Q6 J6 K/ ?3 O0 F
4 e6 ]7 t7 h' @  Y6 l9 {
完整示例% i9 Z( e# ~& G$ A; n
下面是一个完整的示例,演示了如何使用Python和paramiko库进行SFTP操作:& J  k4 J" n, \* ^$ b8 P5 U

5 Y: a: g7 r' t9 p7 y7 g: `* Y( w% `import paramiko
- q. y+ F/ z1 F7 T7 H8 T
0 K$ J8 h+ F. D# J9 c  \% C4 fssh = paramiko.SSHClient()& {  |9 f  P: }& J# i
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())* D0 ?) I" e! V$ X% p: l7 n5 d
! ^- w3 h6 z+ n3 g9 M0 R2 Y% r/ _
ssh.connect('hostname', port=22, username='username', password='password')1 p# u7 ^2 \/ v* j( O0 g
1 ]4 h# u* r( l
sftp = ssh.open_sftp()! E: Y; w4 X) r; q* N* v8 G
  s2 r5 l- B7 H0 R* Z1 }
sftp.put('local_file_path', 'remote_file_path')4 c2 F- N9 w7 Z1 @8 H4 C
sftp.get('remote_file_path', 'local_file_path')6 C; E: x7 s) B

! O: u4 a+ o, J  n$ ?; f! `, j7 T- \6 y. tfiles = sftp.listdir('directory_path')
  S. b* X* s7 w* d, y# W1 B6 t6 v8 x$ ]4 o% |! e
sftp.remove('file_path')" Q% J: x' E1 L9 R$ V

; K& H6 |2 l6 H' @sftp.close()
. P/ Y5 L. b4 \; |5 Z* Nssh.close(): V/ A, k! [. B( i7 I% B
9 F) M6 D2 @- C1 M

0 }( e  A) R  N  y: }
8 C/ K4 V) o' M) g
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-9-12 16:28 , Processed in 1.595314 second(s), 51 queries .

回顶部