Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import re
- import os
- import paramiko
- class BinUpdate:
- files_dirs = []
- file_name_patterns = []
- parts_files = {}
- user_dir = os.path.dirname(os.path.abspath(__file__))
- def run_through_dirs(self):
- os.path.walk(self.user_dir + '/bts_sw', self.add_to_filelist, None)
- def search_for_files(self):
- for key in self.parts_files:
- for filename in self.files_dirs:
- if re.search(key[0], filename):
- self.parts_files[key].append(filename)
- def add_to_filelist(self, a, dir, files):
- for i in files:
- self.files_dirs.append(dir + '/' + i)
- def merge_files(self):
- for key in self.parts_files:
- with open(key[1], 'wb') as outputfile:
- for part in self.parts_files[key]:
- with open(part, 'rb') as inputfile:
- outputfile.write(inputfile.read())
- def sort_parts(self):
- def atoi(text):
- return int(text) if text.isdigit() else text
- def comparator(text):
- return [atoi(c) for c in re.split('(\d+)', text)]
- for key_to_part in self.parts_files:
- self.parts_files[key_to_part].sort(key=comparator)
- class BinUpdateFSMr4(BinUpdate):
- p_magent_version = 0;
- def __init__(self, hardware_type):
- if hardware_type == 'FSM4':
- self.file_patterns = [(r'LTEL2', 'LTEL2.tgz'), (r'FL-K2-DPDSP', 'dpdsp/dsprtsw.bin'),
- (r'FL-K2-UPDSP', 'updsp/dsprtsw.bin'),
- (r'libEM-SC-LOM', 'libEM_SC_LOM.txz'), (r'liblom-trace-em', 'liblom-trace-em.txz'),
- (r'libmeasurement-service-eo', 'libmeasurement-service-eo.txz'),
- (r'pmagent', 'pmagent.txz'), (r'WMPPSem', 'WMPPSem.txz'),
- (r'libfault-service-eo', 'libfault-service-eo.txz'),
- (r'libfault-reporter', 'libfault-reporter.txz'),
- (r'BootKeplerMaster', 'BootKeplerMaster.out'),
- (r'BootKeplerSlave', 'BootKeplerSlave.out')]
- self.parts_files = dict((el, []) for el in self.file_patterns)
- def run_through_dirs(self):
- os.path.walk(self.user_dir + '/bts_sw', self.add_to_filelist, None)
- if not os.path.exists(self.user_dir + '/updsp'):
- os.makedirs(self.user_dir + '/updsp')
- if not os.path.exists(self.user_dir + '/dpdsp'):
- os.makedirs(self.user_dir + '/dpdsp')
- def p_magent_setup(self):
- self.p_magent_version = re.findall(r'(?<=\_)([0-9]*?)(?=\.)',
- self.parts_files[(r'FL-K2-DPDSP', 'dpdsp/dsprtsw.bin')][0])
- for file in self.parts_files[(r'pmagent', 'pmagent.txz')]:
- if re.search(self.p_magent_version[0], file):
- with open(file, 'rb') as inputfile:
- with open('pmagent.txz', 'wb') as outputfile:
- outputfile.write(inputfile.read())
- class FSMr3SendViaSCP:
- def __init__(self):
- self.user_dir = os.path.dirname(os.path.abspath(__file__))
- self.ip_adress_dest = "192.168.255.1"
- self.destinations = {'LTEL2.tgz': ('/ffs/run/swpool/LTE/LTEL2NODE/addons/',),
- 'dpdsp/dsprtsw.bin': ('/ffs/run/boardcfg/1/A/dsp/', '/ffs/run/boardcfg/1/D/dsp/'),
- 'updsp/dsprtsw.bin': ('/ffs/run/boardcfg/1/B/dsp/', '/ffs/run/boardcfg/1/C/dsp/'),
- 'libEM_SC_LOM.txz': (
- '/ffs/run/swpool/LTE/LTEL2NODE/addons/', '/ffs/run/swpool/LTE/FDDMACNODE/addons/'),
- 'liblom-trace-em.txz': (
- '/ffs/run/swpool/LTE/LTEL2NODE/addons/', '/ffs/run/swpool/LTE/FDDMACNODE/addons/'),
- 'libmeasurement-service-eo.txz': ('/ffs/run/swpool/LTE/LTEL2NODE/addons/',),
- 'pmagent.txz': (
- '/ffs/run/swpool/LTE/LTEL2NODE/addons/', '/ffs/run/swpool/LTE/FDDMACNODE/addons/'),
- 'WMPPSem.txz': ('/ffs/run/swpool/LTE/FDDMACNODE/addons/',),
- 'libfault-service-eo.txz': (
- '/ffs/run/swpool/LTE/LTEL2NODE/addons/', '/ffs/run/swpool/LTE/FDDMACNODE/addons/'),
- 'libfault-reporter.txz': (
- '/ffs/run/swpool/LTE/LTEL2NODE/addons/', '/ffs/run/swpool/LTE/FDDMACNODE/addons/'),
- 'BootKeplerMaster.out': (
- '/ffs/run/boardcfg/1/A/dsp/', '/ffs/run/boardcfg/1/D/dsp/', '/ffs/run/boardcfg/1/B/dsp/',
- '/ffs/run/boardcfg/1/C/dsp/'),
- 'BootKeplerSlave.out': (
- '/ffs/run/boardcfg/1/D/dsp/', '/ffs/run/boardcfg/1/A/dsp/', '/ffs/run/boardcfg/1/C/dsp/',
- '/ffs/run/boardcfg/1/B/dsp/')}
- self.testing_dir = ''
- self.ssh_client = paramiko.SSHClient()
- self.ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- self.ssh_client.connect(hostname=self.ip_adress_dest, username='toor4nsn', password='oZPS0POrRieRtu')
- def sending(self):
- ftp_client = self.ssh_client.open_sftp()
- for file in self.destinations:
- for dest in self.destinations[file]:
- if file == 'dpdsp/dsprtsw.bin' or file == 'updsp/dsprtsw.bin':
- print(self.user_dir + '/' + file, dest + file[6:])
- ftp_client.put(self.user_dir + '/' + file, dest + '/' + file[6:])
- else:
- print(self.user_dir + '/' + file, dest + file)
- ftp_client.put(self.user_dir + '/' + file, dest + file)
- ftp_client.close()
- def crasign(self):
- if self.ssh_client:
- for file in self.destinations:
- for dest in self.destinations[file]:
- print(dest + file)
- _, stdout, stderr = self.ssh_client.exec_command('crasign ' + dest + file)
- stdout.read()
- else:
- raise Exception("Connection doesn't exist")
- self.ssh_client.close()
- class BinUpdateFSMr3(BinUpdate):
- basic = [('PSPSDSP', 'dsprtsw1231.bin'), ('L1NBDSP', 'dsprtsw1241.bin'), ('L2L2DSP', 'dsprtsw1251.bin'),
- ('L1NBDSP', 'dsprtsw1261.bin'), ('PSL2DSP', 'dsprtsw1271.bin'), ('L1NBDSP', 'dsprtsw1281.bin'),
- ('PSPSDSP', 'dsprtsw1331.bin'), ('L1NBDSP', 'dsprtsw1341.bin'), ('L2L2DSP', 'dsprtsw1351.bin'),
- ('L1NBDSP', 'dsprtsw1361.bin'), ('PSL2DSP', 'dsprtsw1371.bin'), ('L1NBDSP', 'dsprtsw1381.bin'),
- ('DSP-BW', 'dspbootsw.bin')]
- fbba = [('PSEXDSP', 'dsprtsw1231.bin'), ('L1ULDSP', 'dsprtsw1241.bin'), ('PSEXDSP', 'dsprtsw1251.bin'),
- ('L1ULDSP', 'dsprtsw1261.bin'), ('L2EXDSP', 'dsprtsw1271.bin'), ('L1DLDSP', 'dsprtsw1281.bin'),
- ('L2EXDSP', 'dsprtsw1331.bin'), ('L1DLDSP', 'dsprtsw1341.bin'), ('PSEXDSP', 'dsprtsw1351.bin'),
- ('L1ULDSP', 'dsprtsw1361.bin'), ('L2EXDSP', 'dsprtsw1371.bin'), ('L1DLDSP', 'dsprtsw1381.bin'),
- ('DSP-BW', 'dspbootsw.bin')]
- mixed = [('PSEXDSP', 'dsprtsw1231.bin'), ('L1ULDSP', 'dsprtsw1241.bin'), ('L2L2DSP', 'dsprtsw1251.bin'),
- ('L1DLDSP', 'dsprtsw1261.bin'), ('PSL2DSP', 'dsprtsw1271.bin'), ('L1NBDSP', 'dsprtsw1281.bin'),
- ('PSEXDSP', 'dsprtsw1331.bin'), ('L1ULDSP', 'dsprtsw1341.bin'), ('L2L2DSP', 'dsprtsw1351.bin'),
- ('L1DLDSP', 'dsprtsw1361.bin'), ('PSL2DSP', 'dsprtsw1371.bin'), ('L1NBDSP', 'dsprtsw1381.bin'),
- ('DSP-BW', 'dspbootsw.bin')]
- def __init__(self, deployment):
- if deployment == 'basic':
- self.parts_files = dict((el, []) for el in self.basic)
- if deployment == 'fbba':
- self.parts_files = dict((el, []) for el in self.fbba)
- if deployment == 'mixed':
- self.parts_files = dict((el, []) for el in self.mixed)
- files_from_dirs = BinUpdateFSMr4("FSM4")
- files_from_dirs.run_through_dirs()
- files_from_dirs.search_for_files()
- files_from_dirs.sort_parts()
- files_from_dirs.merge_files()
- files_from_dirs.p_magent_setup()
- print('Merging files completed\n')
- sending = FSMr3SendViaSCP()
- sending.sending()
- sending.crasign()
- # fsm3 = BinUpdateFSMr3('basic')
- # fsm3.run_through_dirs()
- # fsm3.search_for_files()
- # fsm3.sort_parts()
- # fsm3.merge_files()
- # print(fsm3.parts_files)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement