pasquetta

This commit is contained in:
2020-04-13 23:37:50 +02:00
parent cfe6a06784
commit 0238f51ab9
2 changed files with 45 additions and 23 deletions

1
.gitignore vendored
View File

@@ -10,3 +10,4 @@
pyftpdlib_example.py pyftpdlib_example.py
prova.py prova.py
dist/FtpCsvReceiver dist/FtpCsvReceiver
prova1.py

View File

@@ -2,13 +2,12 @@
import sys import sys
import os import os
import re
import pika import pika
import logging import logging
import argparse import argparse
from asebat.timefmt import timestamp_fmt as ts from asebat.timefmt import timestamp_fmt as ts
from pprint import pprint
from pyftpdlib.handlers import FTPHandler from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer from pyftpdlib.servers import FTPServer
from pyftpdlib.authorizers import UnixAuthorizer from pyftpdlib.authorizers import UnixAuthorizer
@@ -17,27 +16,49 @@ from pyftpdlib.filesystems import UnixFilesystem
class ASEHandler(FTPHandler): class ASEHandler(FTPHandler):
def on_file_received(self, file): def on_file_received(self, file):
with open(file, "r") as file_csv: path, filenameExt = os.path.split(file)
for i, line in enumerate(file_csv.readlines(4096), 1): filename, fileExtension = os.path.splitext(filenameExt)
if i == 2:
unit_type, unit_name = line.strip('\n').replace(";","").replace(",","").split(" ") m = re.match( r'^(G\d\d\d)_(ID\d\d\d\d)_(DT\d\d\d\d)_(\d\d)(\d\d)(\d\d\d\d)(\d\d)(\d\d)(\d\d)$', filename, re.I)
logging.info("PID {:>5} >> {} {}".format(os.getpid(), unit_type.upper(), unit_name.upper())) if m :
break unitType = m.group(1).upper()
file_csv.close unitName = m.group(2).upper()
path, filename_ext = os.path.split(file) toolName = m.group(3).upper()
filename, file_extension = os.path.splitext(filename_ext) toolType = "N/A"
new_path = '/home/' + self.username + '/received/' + unit_name.upper() + '/' fileDate = m.group(6) + "/" + m.group(5) + "/" + m.group(4)
new_filename = new_path + filename + '_' + str(ts.timestamp("tms") + file_extension) fileTime = m.group(7) + ":" + m.group(8) + ":" + m.group(9)
try: else :
os.makedirs(new_path) with open(file, "r") as fileCsv:
logging.info("PID {:>5} >> path {} created.".format(os.getpid(), new_path)) try:
except FileExistsError: for i, line in enumerate(fileCsv.readlines(4096), 1):
logging.info("PID {:>5} >> path {} already exists.".format(os.getpid(), new_path)) if i == 1:
try: m1 = re.match( r'File Creation Date: (\d*\/\d*\/\d*)\s(\d*:\d*:\d*).*', line, re.I )
os.rename(file, new_filename) fileDate = m1.group(1)
logging.info("PID {:>5} >> {} moved into {}.".format(os.getpid(), filename_ext, new_filename)) fileTime = m1.group(2)
except OSError: if i == 2:
logging.error("PID {:>5} >> Error to move {} into {}.".format(os.getpid(), filename_ext, new_filename)) unitType, unitName = line.strip('\n').replace(";","").replace(",","").split(" ")
if i == 6:
m6 = re.match( r'SD path: .*\/.*\/(.*)\/(.*)\..*', line, re.I )
toolType = m6.group(1)
toolName = m6.group(2)
break
except:
logging.error("PID {:>5} >> Error: {}.".format( os.getpid(), sys.exc_info()[1]))
fileCsv.close
logging.info("PID {:>5} >> {} - {} - {} - {} - {} - {}.".format(os.getpid(), unitType.upper(), unitName.upper(), toolName.upper(), toolType.upper(), fileDate, fileTime ))
newPath = '/home/' + self.username + '/received/' + unitName.upper() + '/'
newFilename = newPath + filename + '_' + str(ts.timestamp("tms") + fileExtension)
try:
os.makedirs(newPath)
logging.info("PID {:>5} >> path {} created.".format(os.getpid(), newPath))
except FileExistsError:
logging.info("PID {:>5} >> path {} already exists.".format(os.getpid(), newPath))
try:
os.rename(file, newFilename)
logging.info("PID {:>5} >> {} moved into {}.".format(os.getpid(), filenameExt, newFilename))
except OSError:
logging.error("PID {:>5} >> Error to move {} into {}.".format(os.getpid(), filenameExt, newFilename))
def on_incomplete_file_received(self, file): def on_incomplete_file_received(self, file):
# remove partially uploaded files # remove partially uploaded files