##// END OF EJS Templates
jroutils_ftp.py: Remote Server is opened and closed each time a file is sent
Miguel Valdez -
r653:ae332cfe81c4
parent child
Show More
@@ -1,7 +1,8
1 1 VERSIONS:
2 2
3 3 2.1.2:
4 -jroutils_ftp.py: Server thread stops when an error sending file has been detected
4 -jroutils_ftp.py: Bug fixed, Any error sending file stopped the Server Thread
5 Server thread opens and closes remote server each time file list is sent
5 6 -jroplot_spectra.py: Noise path was not being created saving noise data.
6 7 -jroIO_base.py: startTime can be greater than endTime
7 8 -jroplot_heispectra.py: SpectraHeisScope was not showing the right channel
@@ -54,15 +54,23 class Remote(Thread):
54 54
55 55 self.status = 0
56 56
57 self.__server = server
58 self.__username = username
59 self.__password = password
60 self.__remotefolder = remotefolder
61
57 62 self.period = period
63
58 64 self.fileList = []
59 65 self.bussy = False
60 66
61 67 self.stopFlag = False
62 68
63 print "[Remote Server] Opening server: %s" %server
64 if self.open(server, username, password, remotefolder):
65 print "[Remote Server] %s server was opened successfully" %server
69 print "[Remote Server] Opening server: %s" %self.__server
70 if self.open(self.__server, self.__username, self.__password, self.__remotefolder):
71 print "[Remote Server] %s server was opened successfully" %self.__server
72
73 self.close()
66 74
67 75 self.mutex = threading.Lock()
68 76
@@ -193,9 +201,16 class Remote(Thread):
193 201 # self.bussy = True
194 202 self.mutex.acquire()
195 203
204 print "[Remote Server] Opening %s" %self.__server
205 if not self.open(self.__server, self.__username, self.__password, self.__remotefolder):
206 return 0
207
196 208 for thisFile in self.fileList:
197 209 self.upload(thisFile, self.remotefolder)
198 210
211 print "[Remote Server] Closing %s" %self.__server
212 self.close()
213
199 214 self.mutex.release()
200 215 # self.bussy = False
201 216
@@ -224,7 +239,8 class FTPClient(Remote):
224 239
225 240 remotefolder - remote server current working directory
226 241
227 Return: void
242 Return:
243 Boolean - Returns 1 if a connection has been established, 0 otherwise
228 244
229 245 Affects:
230 246 self.status - in case of error or fail connection this parameter is set to 0 else 1
@@ -245,15 +261,16 class FTPClient(Remote):
245 261
246 262 try:
247 263 ftpClientObj = ftplib.FTP(server)
248 except ftplib.all_errors:
249 print "FTP server connection fail: %s" %server
264 except ftplib.all_errors, e:
265 print "[FTP Server]: FTP server connection fail: %s" %server
266 print "[FTP Server]:", e
250 267 self.status = 0
251 268 return 0
252 269
253 270 try:
254 271 ftpClientObj.login(username, password)
255 272 except ftplib.all_errors:
256 print "FTP username or password are incorrect"
273 print "[FTP Server]: FTP username or password are incorrect"
257 274 self.status = 0
258 275 return 0
259 276
@@ -263,7 +280,7 class FTPClient(Remote):
263 280 try:
264 281 ftpClientObj.cwd(remotefolder)
265 282 except ftplib.all_errors:
266 print "FTP remote folder is invalid: %s" %remotefolder
283 print "[FTP Server]: FTP remote folder is invalid: %s" %remotefolder
267 284 remotefolder = ftpClientObj.pwd()
268 285
269 286 self.server = server
@@ -300,7 +317,7 class FTPClient(Remote):
300 317 try:
301 318 self.__ftpClientObj.mkd(dirname)
302 319 except ftplib.all_errors:
303 print "Error creating remote folder: %s" %remotefolder
320 print "[FTP Server]: Error creating remote folder: %s" %remotefolder
304 321 return 0
305 322
306 323 return 1
@@ -327,11 +344,11 class FTPClient(Remote):
327 344 try:
328 345 self.__ftpClientObj.cwd(remotefolder)
329 346 except ftplib.all_errors:
330 print 'Error changing to %s' %remotefolder
331 print 'Trying to create remote folder'
347 print '[FTP Server]: Error changing to %s' %remotefolder
348 print '[FTP Server]: Trying to create remote folder'
332 349
333 350 if not self.mkdir(remotefolder):
334 print 'Remote folder could not be created'
351 print '[FTP Server]: Remote folder could not be created'
335 352 return 0
336 353
337 354 try:
@@ -348,23 +365,24 class FTPClient(Remote):
348 365 if not self.status:
349 366 return 0
350 367
351 file = open(fullfilename, 'rb')
368 fp = open(fullfilename, 'rb')
352 369
353 370 filename = os.path.basename(fullfilename)
354 371
355 372 command = "STOR %s" %filename
356 373
357 374 try:
358 self.__ftpClientObj.storbinary(command, file)
359 except ftplib.all_errors:
375 self.__ftpClientObj.storbinary(command, fp)
376 except ftplib.all_errors, e:
377 print "[FTP Server]:", e
360 378 return 0
361 379
362 380 try:
363 381 self.__ftpClientObj.sendcmd('SITE CHMOD 755 ' + filename)
364 382 except ftplib.all_errors, e:
365 print e
383 print "[FTP Server]:", e
366 384
367 file.close()
385 fp.close()
368 386
369 387 return 1
370 388
@@ -398,6 +416,7 class SSHClient(Remote):
398 416 self.status - in case of error or fail connection this parameter is set to 0 else 1
399 417
400 418 """
419 import socket
401 420
402 421 if server == None:
403 422 raise ValueError, "SSH server should be defined"
@@ -411,23 +430,27 class SSHClient(Remote):
411 430 if remotefolder == None:
412 431 raise ValueError, "SSH remote folder should be defined"
413 432
414 try:
415 433 sshClientObj = paramiko.SSHClient()
416 except:
417 print "SSH server connection fail: %s" %server
418 self.status = 0
419 return 0
420 434
421 435 sshClientObj.load_system_host_keys()
422 436 sshClientObj.set_missing_host_key_policy(paramiko.WarningPolicy())
423 437
438 self.status = 0
424 439 try:
425 440 sshClientObj.connect(server, username=username, password=password, port=port)
426 except :
427 print "SSH username or password are incorrect: %s"
441 except paramiko.AuthenticationException, e:
442 # print "SSH username or password are incorrect: %s"
443 print "[SSH Server]:", e
444 return 0
445 except SSHException, e:
446 print "[SSH Server]:", e
447 return 0
448 except socket.error:
428 449 self.status = 0
450 print "[SSH Server]:", e
429 451 return 0
430 452
453 self.status = 1
431 454 scpClientObj = scp.SCPClient(sshClientObj.get_transport(), socket_timeout=30)
432 455
433 456 if remotefolder == None:
@@ -441,7 +464,7 class SSHClient(Remote):
441 464 self.status = 1
442 465
443 466 if not self.cd(remotefolder):
444 raise ValueError, "Could not access to remote folder: %s" %remotefolder
467 raise ValueError, "[SSH Server]: Could not access to remote folder: %s" %remotefolder
445 468 return 0
446 469
447 470 self.remotefolder = remotefolder
@@ -455,7 +478,8 class SSHClient(Remote):
455 478 if not self.status:
456 479 return 0
457 480
458 self.__sshObj.close()
481 self.__scpClientObj.close()
482 self.__sshClientObj.close()
459 483
460 484 def __execute(self, command):
461 485 """
@@ -541,7 +565,8 class SSHClient(Remote):
541 565
542 566 try:
543 567 self.__scpClientObj.put(fullfilename, remote_path=self.remotefolder)
544 except:
568 except scp.ScpError, e:
569 print "[SSH Server]", str(e)
545 570 return 0
546 571
547 572 remotefile = os.path.join(self.remotefolder, os.path.split(fullfilename)[-1])
General Comments 0
You need to be logged in to leave comments. Login now