QQ登录

只需要一步,快速开始

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

Python SFTP 详细使用

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-21 16:20 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
SFTP(SSH File Transfer Protocol)是一种基于SSH协议的安全文件传输协议。Python提供了paramiko库来实现SFTP功能。本文将详细介绍如何使用Python和paramiko库进行SFTP操作。: Y; q( f8 o* {, h/ i
$ l1 `. _) Z7 X, h( L
安装paramiko库) C7 t+ k# \- L, `; t  Q
首先,我们需要安装paramiko库。在命令行中执行以下命令:
: Z( X* ~2 I2 H/ V# O
8 e7 |; s: }; m# {; q2 G7 f! xpip install paramiko
7 t) P$ Z7 ^9 W' o  B9 P连接到SFTP服务器1 f" x) |7 v; H" V1 c" d/ h" c/ P
接下来,我们需要连接到SFTP服务器。首先,导入paramiko库并创建一个SSHClient对象:
( H! M8 Y8 I% {7 [% ]* x
( b& i* m! D# r9 n1 S2 C7 kimport paramiko
  {0 a% a2 Z1 R7 K
: `( Y! w; g" J$ X' u+ yssh = paramiko.SSHClient()- K& t- M% Y1 o9 ?

/ q% f0 ~) y7 K! }  }1 _然后,我们需要设置SSHClient对象的策略,用于接受SFTP服务器的主机密钥。在开发环境中,可以使用AutoAddPolicy策略,它会自动接受所有主机密钥。在生产环境中,应该使用更安全的策略:. _( t" O" e+ r' ^

6 f% M, z, k% J, a3 T+ W# x  K# yssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
4 U2 |* H' v) ]; Z  F( @
7 j  ?, F4 h, }$ b7 u( e7 u- H接下来,使用connect方法连接到SFTP服务器。需要提供服务器的主机名、端口、用户名和密码:
) o. W: m& ?4 I( @4 @; h5 w
( m6 ~3 y7 p6 A& W+ W) d4 [ssh.connect('hostname', port=22, username='username', password='password')
6 M4 }' V! j+ L9 n# w- |! Z, J; ?9 P3 }! \+ F
创建SFTP会话: j! k# w! q7 h* z
成功连接到SFTP服务器后,我们需要创建一个SFTP会话。通过SSHClient对象的open_sftp方法创建一个SFTPClient对象:
& L+ H6 G  p+ g- J5 v# C& q- U. s& D: U( v/ u5 l# @4 D
sftp = ssh.open_sftp()- M- A$ Y' g$ o8 a$ P- T

; J) f% c8 D6 K% D5 M上传文件
9 r* O1 o) J( k& Y# K现在,我们可以开始进行SFTP操作了。首先,让我们看看如何上传文件。使用SFTPClient对象的put方法可以将本地文件上传到远程服务器上。需要提供本地文件路径和远程服务器的目标路径:6 Y$ K* ?; D% m* X( I- V3 q( \& D
! w2 D! [$ D6 h# `
sftp.put('local_file_path', 'remote_file_path')" U7 ]$ r+ T& Y4 t
* p2 ~" w$ y, Z! Z* M/ ?
下载文件  p# x5 s. n$ Z* W, M3 E. T
除了上传文件,我们还可以从远程服务器上下载文件。使用SFTPClient对象的get方法可以将远程服务器上的文件下载到本地。需要提供远程服务器文件路径和本地目标路径:
6 L, J5 p- j" |# P
! j. f4 p, h' ?4 U) z$ m  nsftp.get('remote_file_path', 'local_file_path')' Q7 j& P4 o6 m2 I/ f: f/ `
, G8 e" {' P" V& A
列出文件和目录
& N+ w$ p$ V; Y+ i使用SFTPClient对象的listdir方法可以列出指定目录下的文件和目录。需要提供目标路径:
9 |8 \' u% E4 _& W& g$ \' T) D5 k+ m$ a/ j
files = sftp.listdir('directory_path')2 e# }4 ?5 l- `" q- f6 H2 L/ _7 J/ s
  p6 f4 I. M' v' ^- ?& x4 K
删除文件
. b4 q# |8 L) y5 \7 G6 H7 {1 O- B# n使用SFTPClient对象的remove方法可以删除指定的文件。需要提供文件路径:
) h( n, K; f7 V! x  ~! m
+ l1 l: e( E# ~" T: c4 L; ^( \sftp.remove('file_path')
9 L# E! h) j* j% G9 p" b$ |2 _) a/ Z2 j$ M, s1 ?: B9 ]) t
关闭SFTP会话和SSH连接3 q( K2 S: a2 Q0 C# ~
完成SFTP操作后,我们需要关闭SFTP会话和SSH连接。分别调用SFTPClient对象的close方法和SSHClient对象的close方法:: ], D% I# @$ @9 [) s/ @

) T+ O3 T7 u9 B0 M0 c1 qsftp.close()' U$ q, [4 h9 B" n% o1 L
ssh.close()* y$ [  p$ o. B7 z
# m" }" ?5 `: b9 ?% h0 k: I6 t$ X
完整示例0 J' q5 y  Q4 V6 k% `7 g
下面是一个完整的示例,演示了如何使用Python和paramiko库进行SFTP操作:
; j* V+ e% D, z9 ^: u+ @. U& l5 l  q& g  I: p! X
import paramiko7 h3 p1 ^: A: D6 Q- v

1 `6 l7 k! h: S: E/ Cssh = paramiko.SSHClient()
0 n( ?) V; `# j5 O8 `" |ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
4 l. k- v/ u4 z, q) H3 M; p$ c
. m+ H7 N& J+ O0 H$ W. q4 Gssh.connect('hostname', port=22, username='username', password='password')9 C: |# ]5 b% `0 Y' C: @
1 {+ g: s$ _: t
sftp = ssh.open_sftp()
& A5 `' M% l( h# F: b
% u2 q: O1 c* a, ^' V4 V. `! Z! x( `sftp.put('local_file_path', 'remote_file_path'). W; g) w# B, D
sftp.get('remote_file_path', 'local_file_path'), V1 v" p! [5 b% \- {' m% A: b

1 h; c! j( Y" Zfiles = sftp.listdir('directory_path')
3 b% A1 B: M* Y& e6 A% w4 [: r2 `( b) o$ C
sftp.remove('file_path')$ ]2 E8 v2 K  c* F, S( R+ V0 `
- w) j( p# Z$ g7 l8 s. v
sftp.close()+ G" R6 o$ ~  K0 U! N, L1 w
ssh.close()
& K; j& \3 l) X. u  v
3 X! O# y& `' E- E3 N" A3 d. r; X$ U! v  o/ a

* O- j2 ?8 i0 R1 x0 |% F
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-6-11 06:51 , Processed in 0.625310 second(s), 51 queries .

回顶部