网上大部分都是上传文件,于是个人参照网上一些博客的内容,写了一个把windows上目录上传到远程linux的一个小程序。
下面是代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
class ExportPrepare( object ): def __init__( self ): pass t.connect(username = self .username, password = self .password) return t # 找到所有你要上传的目录已经文件。 def __get_all_files_in_local_dir( self , local_dir): all_files = list () if os.path.exists(local_dir): files = os.listdir(local_dir) for x in files: filename = os.path.join(local_dir, x) print "filename:" + filename # isdir if os.path.isdir(filename): all_files.extend( self .__get_all_files_in_local_dir(filename)) else : all_files.append(filename) else : print '{}does not exist' . format (local_dir) return all_files # Copy a local file (localpath) to the SFTP server as remotepath def sftp_put_dir( self ): try : #本地test目录上传到远程root/usr/下面 local_dir = "c:/test" remote_dir = "/root/usr/test" t = self .sftp_con() sftp = paramiko.SFTPClient.from_transport(t) # sshclient ssh = paramiko.SSHClient() ssh.load_system_host_keys() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect( self .ip, port = self .port, username = self .username, password = self .password, compress = True ) ssh.exec_command( 'rm -rf ' + remote_dir) if remote_dir[ - 1 ] = = '/' : remote_dir = remote_dir[ 0 : - 1 ] all_files = self .__get_all_files_in_local_dir(local_dir) for x in all_files: filename = os.path.split(x)[ - 1 ] remote_file = os.path.split(x)[ 0 ].replace(local_dir, remote_dir) path = remote_file.replace( '\\', ' / ') # 创建目录 sftp的mkdir也可以,但是不能创建多级目录所以改用ssh创建。 tdin, stdout, stderr = ssh.exec_command( 'mkdir -p ' + path) print stderr.read() remote_filename = path + '/' + filename print u 'Put files...' + filename sftp.put(x, remote_filename) ssh.close() except Exception, e: print e if __name__ = = '__main__' : export_prepare = ExportPrepare() export_prepare.sftp_put_dir() |
比较匆忙,不足之处可以指出,共同进步。
以上这篇python paramiko利用sftp上传目录到远程的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/zdpyouzhe/article/details/52953677