@@ -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,16 +54,24 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 | |
|
66 | ||
|
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() | |
|
74 | ||
|
67 | 75 | self.mutex = threading.Lock() |
|
68 | 76 | |
|
69 | 77 | def stop(self): |
@@ -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: |
|
|
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 |
f |
|
|
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, f |
|
|
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 |
f |
|
|
385 | fp.close() | |
|
368 | 386 | |
|
369 | 387 | return 1 |
|
370 | 388 | |
@@ -398,7 +416,8 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 | """ |
|
401 | ||
|
419 | import socket | |
|
420 | ||
|
402 | 421 | if server == None: |
|
403 | 422 | raise ValueError, "SSH server should be defined" |
|
404 | 423 | |
@@ -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 | sshClientObj = paramiko.SSHClient() | |
|
416 | except: | |
|
417 | print "SSH server connection fail: %s" %server | |
|
418 | self.status = 0 | |
|
419 | return 0 | |
|
433 | sshClientObj = paramiko.SSHClient() | |
|
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.__s |
|
|
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