QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1764|回复: 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操作。  s$ @3 m5 d0 i, a) P7 j" W
! W, @( N# J0 L9 H2 D$ J
安装paramiko库- n" i- R7 m. t, H+ u
首先,我们需要安装paramiko库。在命令行中执行以下命令:( H% ^7 Y5 J1 i2 u5 ^

% p2 E/ q( F6 J; z3 I& f0 C8 A3 fpip install paramiko& b7 p5 A* M) u' R' t; _8 Y
连接到SFTP服务器3 P, J3 ^* l5 |- B- J; L* W8 m
接下来,我们需要连接到SFTP服务器。首先,导入paramiko库并创建一个SSHClient对象:
" Z( |1 C) i! [9 p+ F- h# ^8 x* a8 e0 E6 Y* R1 u6 U/ n. z$ S- r& I
import paramiko, y# {1 u9 ?. U# Y6 _
( O: O+ Q: g9 d2 ^9 C
ssh = paramiko.SSHClient()6 j/ Z0 d( r$ f- u+ i
9 G5 `( E- e8 c& t
然后,我们需要设置SSHClient对象的策略,用于接受SFTP服务器的主机密钥。在开发环境中,可以使用AutoAddPolicy策略,它会自动接受所有主机密钥。在生产环境中,应该使用更安全的策略:) W. _& J3 ?8 U% ?: S4 k2 L
4 r; n8 Q" \$ F! n9 I! ]
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
: ~6 g4 q$ K8 z5 A, M! J6 c' G6 [( F# U* s' b# A7 j
接下来,使用connect方法连接到SFTP服务器。需要提供服务器的主机名、端口、用户名和密码:
" v' \% p% P9 D& |# [7 ?9 g
7 n- j' L5 F* X( mssh.connect('hostname', port=22, username='username', password='password')2 f, j0 @" J% W& U" G& S+ C0 n

+ ]9 u, S/ O5 \/ E) r# Q8 }& Q创建SFTP会话
, `9 J, M, ~/ w" O成功连接到SFTP服务器后,我们需要创建一个SFTP会话。通过SSHClient对象的open_sftp方法创建一个SFTPClient对象:
+ H3 t0 n3 M$ b$ p: ^' c3 E' }( \- `$ R5 q7 U
sftp = ssh.open_sftp()
1 V+ p7 E+ D; U8 V3 S4 r" m% s$ W6 k+ D+ ]
上传文件4 }5 U9 q, W% _7 s7 q
现在,我们可以开始进行SFTP操作了。首先,让我们看看如何上传文件。使用SFTPClient对象的put方法可以将本地文件上传到远程服务器上。需要提供本地文件路径和远程服务器的目标路径:
! d8 P, R4 ~* ^! Z4 r: ]- B" }7 s. w3 B, q" g" d3 _
sftp.put('local_file_path', 'remote_file_path')
3 R5 o2 B+ g  B9 i8 p' I' B& c4 E& }$ v
下载文件  z* V: m: N, o. ^7 A3 r( [+ R; }7 G; L
除了上传文件,我们还可以从远程服务器上下载文件。使用SFTPClient对象的get方法可以将远程服务器上的文件下载到本地。需要提供远程服务器文件路径和本地目标路径:3 I1 g9 j6 p5 L. B/ K+ U

1 l$ V. F$ S" G# v4 R# A( ^sftp.get('remote_file_path', 'local_file_path'): `! K+ O% @0 N5 l  ?$ P2 }& i" @

: ]& k( A1 S8 }  p+ t列出文件和目录
- P3 z( O8 X* E! t- F( v( w使用SFTPClient对象的listdir方法可以列出指定目录下的文件和目录。需要提供目标路径:
; y- d2 p( g! d9 j2 D. `. M
3 a0 W2 ^, n  k2 I) m# ?/ bfiles = sftp.listdir('directory_path')& a2 S; {& y; y! N

+ _) I1 ^) d% J! d& U删除文件- Y* t2 \# T' y( x/ |2 @9 u# {
使用SFTPClient对象的remove方法可以删除指定的文件。需要提供文件路径:
( J3 }/ i  K# j/ D: n% J9 M! X+ R* O& Y5 C5 Z$ p
sftp.remove('file_path')
7 ]" i4 k  h8 o0 e
) J; T7 Y/ F9 T" ~$ P- B: q关闭SFTP会话和SSH连接9 H6 Y0 \( s" U7 ]; x. V
完成SFTP操作后,我们需要关闭SFTP会话和SSH连接。分别调用SFTPClient对象的close方法和SSHClient对象的close方法:
0 c0 ]8 R9 I8 |: t) [; Q/ w+ s7 B
sftp.close()
% ]5 F' h# }7 q- lssh.close()
' M( Y, k4 D$ L# O* h9 F9 |  V( o# F/ P! \  z
完整示例6 c7 ^. m+ {/ {" }( Z- [! ]
下面是一个完整的示例,演示了如何使用Python和paramiko库进行SFTP操作:1 Q. o: ^5 S5 h/ V  b# v# Y  |& G3 A% `

8 {. U# {( z5 v/ f0 Simport paramiko0 z- m1 G: r: {6 ^( V! y1 h. I

( D. R0 b  P4 D! Z+ Y  G$ ~; essh = paramiko.SSHClient()
( C( O6 C$ W! {, M  lssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
6 X% d: f$ T! L0 x  \+ Z
) C* Q* g6 E$ W$ n; _+ Mssh.connect('hostname', port=22, username='username', password='password')
7 W8 p8 L6 P* g1 s, P% m* i( G; I% W
sftp = ssh.open_sftp()& b& o) }  `' \0 V: ^6 F
/ K6 v( k0 e+ t. p
sftp.put('local_file_path', 'remote_file_path')- I) i" e2 k) X5 D# P
sftp.get('remote_file_path', 'local_file_path')
; V# A7 e: P% P, A. s, d( e8 l/ K! ~; |
files = sftp.listdir('directory_path')
" S3 I' z" C) D$ L. ^( F9 ~
  a4 A. ~9 O" gsftp.remove('file_path')
# U  w9 W( O# Z9 Z# b4 ?" f- W- r9 U9 ^2 E
sftp.close()& ?- \( W- N# d0 Z( a) p6 C
ssh.close()/ u+ E# d6 `& F+ I" u
9 A% P& e3 U# e8 d9 ^- F% R- V
% A  n& v8 W& d! {# b- w/ o

  E$ u9 S3 c( K) `2 ]1 |
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-29 23:07 , Processed in 0.313877 second(s), 51 queries .

回顶部