@@ -13,7 +13,7 @@ class SFTPClient(SSHClient):
13
13
14
14
def __init__ (self , host , port , method , password , user , key , session ):
15
15
super ().__init__ (host , port , method , password , user , key , session )
16
- self ._sftp = None
16
+ self ._sftp : Optional [ paramiko . SFTPClient ] = None
17
17
self .subsystem_count = 0
18
18
19
19
@classmethod
@@ -53,70 +53,100 @@ def connect(self):
53
53
ret = super ().connect ()
54
54
if not ret :
55
55
return False
56
+ if self ._sftp is None :
57
+ return paramiko .sftp .SFTP_FAILURE
56
58
try :
57
59
self ._sftp = paramiko .SFTPClient .from_transport (self .transport )
58
60
return True
59
61
except Exception :
60
62
logging .exception ('error creating sftp client' )
61
- return False
63
+ return False
62
64
63
65
def chmod (self , path , mode ):
66
+ if self ._sftp is None :
67
+ return paramiko .sftp .SFTP_FAILURE
64
68
self ._sftp .chmod (path , mode )
65
- return paramiko .SFTP_OK
69
+ return paramiko .sftp . SFTP_OK
66
70
67
71
def chown (self , path , uid , gid ):
72
+ if self ._sftp is None :
73
+ return paramiko .sftp .SFTP_FAILURE
68
74
self ._sftp .chown (path , uid , gid )
69
- return paramiko .SFTP_OK
75
+ return paramiko .sftp . SFTP_OK
70
76
71
77
def get (self , remotePath , localPath , callback = None ):
78
+ if self ._sftp is None :
79
+ return paramiko .sftp .SFTP_FAILURE
72
80
try :
73
81
self ._sftp .get (remotePath , localPath , callback )
74
- return paramiko .SFTP_OK
82
+ return paramiko .sftp . SFTP_OK
75
83
except (IOError , OSError ) as ex :
76
84
logging .error (ex )
77
85
os .remove (localPath )
78
- return paramiko .SFTP_FAILURE
86
+ return paramiko .sftp . SFTP_FAILURE
79
87
80
88
def listdir_attr (self , path = '.' ):
89
+ if self ._sftp is None :
90
+ return paramiko .sftp .SFTP_FAILURE
81
91
return self ._sftp .listdir_attr (path )
82
92
83
93
def lstat (self , path ):
94
+ if self ._sftp is None :
95
+ return paramiko .sftp .SFTP_FAILURE
84
96
return self ._sftp .lstat (path )
85
97
86
98
def mkdir (self , path , mode = 511 ):
99
+ if self ._sftp is None :
100
+ return paramiko .sftp .SFTP_FAILURE
87
101
self ._sftp .mkdir (path , mode )
88
- return paramiko .SFTP_OK
102
+ return paramiko .sftp . SFTP_OK
89
103
90
104
def put (self , localPath , remotePath , callback = None , confirm = True ):
91
105
raise NotImplementedError ('put not implemented' )
92
106
93
107
def readlink (self , path ):
108
+ if self ._sftp is None :
109
+ return paramiko .sftp .SFTP_FAILURE
94
110
return self ._sftp .readlink (path )
95
111
96
112
def remove (self , path ):
113
+ if self ._sftp is None :
114
+ return paramiko .sftp .SFTP_FAILURE
97
115
self ._sftp .remove (path )
98
- return paramiko .SFTP_OK
116
+ return paramiko .sftp . SFTP_OK
99
117
100
118
def rename (self , oldpath , newpath ):
119
+ if self ._sftp is None :
120
+ return paramiko .sftp .SFTP_FAILURE
101
121
self ._sftp .rename (oldpath , newpath )
102
- return paramiko .SFTP_OK
122
+ return paramiko .sftp . SFTP_OK
103
123
104
124
def rmdir (self , path ):
125
+ if self ._sftp is None :
126
+ return paramiko .sftp .SFTP_FAILURE
105
127
self ._sftp .rmdir (path )
106
- return paramiko .SFTP_OK
128
+ return paramiko .sftp . SFTP_OK
107
129
108
130
def stat (self , path ):
131
+ if self ._sftp is None :
132
+ return paramiko .sftp .SFTP_FAILURE
109
133
return self ._sftp .stat (path )
110
134
111
135
def utime (self , path , times ):
136
+ if self ._sftp is None :
137
+ return paramiko .sftp .SFTP_FAILURE
112
138
return self ._sftp .utime (path , times )
113
139
114
140
def symlink (self , source , dest ):
141
+ if self ._sftp is None :
142
+ return paramiko .sftp .SFTP_FAILURE
115
143
self ._sftp .symlink (source , dest )
116
- return paramiko .SFTP_OK
144
+ return paramiko .sftp . SFTP_OK
117
145
118
146
def close (self ):
147
+ if self ._sftp is None :
148
+ return paramiko .sftp .SFTP_FAILURE
119
149
if not self .running :
120
150
self ._sftp .close ()
121
151
self .session .sftp_channel .close ()
122
- return paramiko .SFTP_OK
152
+ return paramiko .sftp . SFTP_OK
0 commit comments