QQ登录

只需要一步,快速开始

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

Python SFTP 详细使用

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

1171

主题

4

听众

2781

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 16:20 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
SFTP(SSH File Transfer Protocol)是一种基于SSH协议的安全文件传输协议。Python提供了paramiko库来实现SFTP功能。本文将详细介绍如何使用Python和paramiko库进行SFTP操作。- F0 E( Y8 C/ X/ r. P# C1 x& k
7 A6 y0 c1 F. c6 ~! k
安装paramiko库  k. R/ {( b+ M/ Q/ v4 f/ A8 c6 e  u
首先,我们需要安装paramiko库。在命令行中执行以下命令:
  x1 C0 t6 R0 x5 `6 d# n9 w, j3 w. L; M6 g
pip install paramiko# U4 V& U7 V3 c- J
连接到SFTP服务器2 }) g; n$ ^2 m+ n: ~# O  G8 ]
接下来,我们需要连接到SFTP服务器。首先,导入paramiko库并创建一个SSHClient对象:( B9 j* s" o0 H8 F

& @9 `8 ^3 T2 @- N$ Oimport paramiko9 U2 q/ c5 J" B0 S
, E& X5 e8 v% [( o
ssh = paramiko.SSHClient()! |( z2 W! ?( T, A! C

. n" K! ?  p; t5 i& _1 h/ R然后,我们需要设置SSHClient对象的策略,用于接受SFTP服务器的主机密钥。在开发环境中,可以使用AutoAddPolicy策略,它会自动接受所有主机密钥。在生产环境中,应该使用更安全的策略:3 P; [$ B  ?! W/ u( b. J) s5 b
1 G& V8 {' P) v  ]
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
4 l' o/ Y1 `" g0 a3 p7 E5 J' _' v' x3 `& I0 h! y
接下来,使用connect方法连接到SFTP服务器。需要提供服务器的主机名、端口、用户名和密码:
* B& t' j: n. M* j; ~0 D1 H8 J2 e
ssh.connect('hostname', port=22, username='username', password='password')/ O8 R/ K7 h/ c5 `; k" r
5 p! I2 s# ~7 d( k  r
创建SFTP会话3 d1 i2 G) n) ?" l) s( L
成功连接到SFTP服务器后,我们需要创建一个SFTP会话。通过SSHClient对象的open_sftp方法创建一个SFTPClient对象:4 v, [  |1 m, M' p  \* S2 h

6 {- G/ l. x9 |2 K" V6 K( |2 w2 Fsftp = ssh.open_sftp()7 V9 k# d9 ~% m8 i% b

6 j$ f9 V3 s' T4 f3 J9 x( j# ?上传文件
/ h& ~+ m" `5 L2 ^; |现在,我们可以开始进行SFTP操作了。首先,让我们看看如何上传文件。使用SFTPClient对象的put方法可以将本地文件上传到远程服务器上。需要提供本地文件路径和远程服务器的目标路径:. c5 N; A" Q& B9 k

8 D; W; s6 l; Q4 ?+ G) k9 Asftp.put('local_file_path', 'remote_file_path')! }. I: J$ N8 c7 s
8 I6 e$ G  W$ Q  i$ C. G) E5 l
下载文件+ \/ P5 p9 d' B$ F
除了上传文件,我们还可以从远程服务器上下载文件。使用SFTPClient对象的get方法可以将远程服务器上的文件下载到本地。需要提供远程服务器文件路径和本地目标路径:
( s9 `" N" N" c& f: J1 P- \* `# e3 y: r$ P" C/ T
sftp.get('remote_file_path', 'local_file_path')
% B7 E, M- ]4 p& R9 o) n. s/ H# @+ m: B; ?( I9 B$ k2 O
列出文件和目录
7 _0 c) I# t, {6 H2 I0 H4 O使用SFTPClient对象的listdir方法可以列出指定目录下的文件和目录。需要提供目标路径:
% `+ n& g* ~; @: H
4 k! ?3 R5 K$ B3 ~# a4 n) Xfiles = sftp.listdir('directory_path')$ K' o, |+ j1 m" [' |; t* u: q  }

) b; ~, t3 G  V删除文件
4 Z7 Y: y2 z8 {$ O, @使用SFTPClient对象的remove方法可以删除指定的文件。需要提供文件路径:- L4 ?& V+ V) Z' Z
: E, N2 [3 B3 x+ I! h
sftp.remove('file_path')
8 H. V3 W& ~% \* o
9 v: l; j+ O6 Y9 t关闭SFTP会话和SSH连接7 b, ]7 R3 j; ]0 d6 v2 G7 s% l# {
完成SFTP操作后,我们需要关闭SFTP会话和SSH连接。分别调用SFTPClient对象的close方法和SSHClient对象的close方法:
4 b+ k  {0 t+ O7 `+ D4 `
3 ~4 z& l7 V# H3 m1 ~0 }0 z8 Hsftp.close()
, p8 ~8 k: }; @" S3 |ssh.close()& [, U8 f' l  `; m

4 o9 q- f% d7 N0 p; V' m3 i3 t完整示例
8 F% F' O9 o9 ^3 \下面是一个完整的示例,演示了如何使用Python和paramiko库进行SFTP操作:' Z/ b& R7 D2 S4 P/ ?5 @0 e
0 o3 W$ F: ^7 Q( f' i% y! K1 }
import paramiko
1 p" P5 S6 q& j  ]8 N( S
. }1 |9 `6 @( \$ f' \ssh = paramiko.SSHClient()1 {; E5 z' H& }2 S6 ^( i9 w4 Q, V
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
, y. x3 h# h; b# h7 m- G# W* x
2 Q, Q8 R* r; r8 H# ~ssh.connect('hostname', port=22, username='username', password='password')
1 k( I: T: b3 i* }" Z( F* Z/ e2 w* K6 d* I* _, o( @
sftp = ssh.open_sftp()
5 X2 |7 H1 C; K6 P; R  i( L& _, e( Z  m5 s+ d
sftp.put('local_file_path', 'remote_file_path')
1 L. R: Y* l" O  }3 Csftp.get('remote_file_path', 'local_file_path')
7 _) J5 [1 Q1 A6 I/ q$ F* K+ ?, O6 f8 I! M& }0 g  g0 E2 U1 Q
files = sftp.listdir('directory_path')
' S; S" X2 E% t1 B3 E! T
/ c6 \) O7 c3 N. A9 Xsftp.remove('file_path')
0 D' D- _: p) n' N" a4 l7 [: z
( k& O8 r/ |7 Z" z" Fsftp.close()
2 ?9 v3 c3 c: L. b7 Ossh.close(), G) D+ A: l& J6 ~" L
, n2 u  K" c- U  b3 [
- m" t+ m9 P. S, m
4 f" @+ B: e3 @, E  ?
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, 2025-6-25 02:53 , Processed in 0.553173 second(s), 51 queries .

回顶部