QQ登录

只需要一步,快速开始

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

Python SFTP 详细使用

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

1188

主题

4

听众

2931

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 16:20 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
SFTP(SSH File Transfer Protocol)是一种基于SSH协议的安全文件传输协议。Python提供了paramiko库来实现SFTP功能。本文将详细介绍如何使用Python和paramiko库进行SFTP操作。  Q  E6 W. h2 \. R' M1 @' q, \
1 z& j( V0 V2 x6 G
安装paramiko库
4 t( @0 S  \/ H7 Y  x+ z首先,我们需要安装paramiko库。在命令行中执行以下命令:
9 E5 Z  x. a+ c, P8 T2 U' c+ q$ p% X# A5 e: O7 c% x
pip install paramiko; k2 ?6 R  I  ^7 v3 K' ~8 T2 s
连接到SFTP服务器1 f/ W( W2 N8 d& S7 D4 |# x! C
接下来,我们需要连接到SFTP服务器。首先,导入paramiko库并创建一个SSHClient对象:
- |& l  C6 q/ n& L6 M: Y4 j5 I& p8 v" ^8 t
import paramiko8 o4 L% {" s! F3 ^5 ~# t9 }

( @6 s$ i7 [" }; }, |  H/ Zssh = paramiko.SSHClient()
/ G8 t# z) K) F; h) O4 F0 o% W2 B; R5 n  c. ^) y9 ?* e/ v
然后,我们需要设置SSHClient对象的策略,用于接受SFTP服务器的主机密钥。在开发环境中,可以使用AutoAddPolicy策略,它会自动接受所有主机密钥。在生产环境中,应该使用更安全的策略:+ N' ?  B0 B# ~- _
! o7 Y: b, b1 \8 ?; t- Z, V# \4 z
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()). v9 E4 p+ ~9 u2 e0 Y

/ X4 |6 P9 a; y; u( _: c接下来,使用connect方法连接到SFTP服务器。需要提供服务器的主机名、端口、用户名和密码:; d. z2 m3 `% c9 V1 Z

2 L$ b% N+ o3 O& x$ D, {- {ssh.connect('hostname', port=22, username='username', password='password')
3 f: ~' @( a5 q4 t, p# d
$ r: a: z: c: C! C% r" y创建SFTP会话* l. x; ]" r! W% G
成功连接到SFTP服务器后,我们需要创建一个SFTP会话。通过SSHClient对象的open_sftp方法创建一个SFTPClient对象:
, I0 b" j( R, w  e1 s+ c! h& U0 N3 r/ e3 _# N- p+ e- B
sftp = ssh.open_sftp()' Z) s& U* ~6 R1 |; k
" C# {: M2 s" ?6 c6 C  r9 Y# X9 u
上传文件
+ M- X% s: h" D, }现在,我们可以开始进行SFTP操作了。首先,让我们看看如何上传文件。使用SFTPClient对象的put方法可以将本地文件上传到远程服务器上。需要提供本地文件路径和远程服务器的目标路径:- ^: q1 E" J$ [) x' W
  g  t7 D0 v) p' }
sftp.put('local_file_path', 'remote_file_path')0 }# s2 J2 M% T7 Z: V% M
. ^! H: [, ^( T* L4 v, s
下载文件8 j" L  c$ A9 X  c0 W9 O
除了上传文件,我们还可以从远程服务器上下载文件。使用SFTPClient对象的get方法可以将远程服务器上的文件下载到本地。需要提供远程服务器文件路径和本地目标路径:3 @" f8 `& S. S. q3 N, G
: c+ y7 b% A8 Q& u2 q; m
sftp.get('remote_file_path', 'local_file_path')' ~/ ^+ [! f; _) Q. n4 g; M. w
) n( `' u& }# ^7 O6 t
列出文件和目录
' l8 V6 _  y6 k' _' s4 C使用SFTPClient对象的listdir方法可以列出指定目录下的文件和目录。需要提供目标路径:
4 L' V8 w5 M1 n  b) J4 O
; e9 K& }* \" c4 p! x3 B5 d: bfiles = sftp.listdir('directory_path')$ ~6 X: |# z6 V3 U5 [; ~; T

9 \' W" S" w5 D  L! H# `* r删除文件$ _( v9 l, V3 ]
使用SFTPClient对象的remove方法可以删除指定的文件。需要提供文件路径:
9 J) H0 K/ `# {$ i1 i$ q: s" |% _" H8 F/ e9 |( j
sftp.remove('file_path')4 b0 x$ o1 B. b4 y+ u/ J

- B/ m% f6 N& C# J4 j! k: D关闭SFTP会话和SSH连接
3 x4 _- R2 [3 ~$ A/ P完成SFTP操作后,我们需要关闭SFTP会话和SSH连接。分别调用SFTPClient对象的close方法和SSHClient对象的close方法:' N. d2 |$ }. U7 c* [

% I& ]# b% a1 t, A& R. asftp.close()
) ^& |+ b; Z1 }9 J$ D& u7 d' lssh.close()0 L6 Z6 ?0 M: c, J/ t
% u5 ^. z2 K2 U. t3 }
完整示例
1 g1 K4 Q. y' F0 F+ T( h+ j下面是一个完整的示例,演示了如何使用Python和paramiko库进行SFTP操作:* b8 R- e" v/ S* z5 f) Z. {
4 e% x7 [0 x& m$ V% e
import paramiko
; _) _2 g  l9 T$ E
4 V0 O3 F: Y' P7 r# T) ~ssh = paramiko.SSHClient()
* Z! E6 ^$ U9 [: Ussh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
: ?+ p6 n) ^4 d& w8 o- Z: l4 W
* }0 E( m9 }& P. ?8 L; issh.connect('hostname', port=22, username='username', password='password')0 R0 ?& M# d! m" V" X

8 x; l3 j2 y6 f- Csftp = ssh.open_sftp()
6 {. }% n1 H9 I! E4 W' v% J% i
6 r% w4 E+ A/ J! W& dsftp.put('local_file_path', 'remote_file_path')) r8 T6 K  ~$ e9 g0 ^
sftp.get('remote_file_path', 'local_file_path')5 l& L. z" d5 G1 |6 Z( u3 x0 M
- P8 f* K5 L3 ]
files = sftp.listdir('directory_path')0 r7 f( o: D  i: L  y& x( `. K

# I$ q6 f; e, xsftp.remove('file_path')9 I3 r% {. C  s, ?1 n

: a+ O) m( k( N  `. n3 A  A0 j: n, Xsftp.close()9 Z. B$ [# K6 A6 q& S4 _" ?
ssh.close()
& _/ {! z. k' }; P! _0 c9 @
1 P' l3 B4 U( ?! h  p/ W$ m
0 H# E7 X' ~5 K; L# c8 B
. A+ K+ ?1 r, U& R, m$ y  b
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-5-26 00:08 , Processed in 0.413860 second(s), 50 queries .

回顶部