Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- __author__ = 'victor.grivtsov'
- # -*- coding: utf-8 -*-
- import os
- from datetime import datetime
- import xlrd
- import sys
- from pytils import translit
- import subprocess
- import telnetlib
- from PyQt4 import QtCore, QtGui, uic
- import traceback
- import contextlib
- settings = open("../settings.txt") # OSS, DB login/pass
- dt = datetime.now().strftime('[%Y%m-%d %H:%M]')
- #parsing settings file
- arr = []
- for i in settings:
- arr.append(i.rstrip().split())
- HOST = arr[0][0].strip()
- HOST_LTE_OSS = arr[1][0].strip()
- HOST2 = arr[2][0].strip()
- HOST2_name = arr[3][0].strip()
- HOST_LTE = arr[4][0].strip()
- HOST_LTE_NAME = arr[5][0].strip()
- user = arr[6][0].strip()
- password = arr[7][0].strip()
- # new work_scripts directory
- def new_dir():
- global path
- path = ("../work_scripts/%s" % startname)
- if os.path.exists(path):
- for (p,d,f) in os.walk(path, False):
- for file_name in f: # remove all files
- os.remove(os.path.join(p, file_name))
- for dir_name in d: # remove all dirs
- os.rmdir(os.path.join(p,dir_name))
- new_path = path
- os.mkdir(new_path)
- else:
- new_path = path
- os.mkdir(new_path)
- # ------------------------------Get-Excel-Data--------------------------
- # Extract_RNC_RBS_ID
- def extdata():
- global data_dict
- data_dict = dict(rnc_id='Отсутсвует', longitude='Отсутсвует',
- latitude='Отсутсвует', location='Отсутсвует',
- location_rus='Отсутсвует',altitude='Отсутсвует')
- workbook = xlrd.open_workbook('../DB/New_data_T2_v4.xlsx')
- worksheet = workbook.sheet_by_name('Table')
- for row in range(worksheet.nrows):
- data = (worksheet.cell_value(row,0))
- if str(startname) == str(data):
- for col in range(worksheet.ncols):
- data_dict["rnc_id"] = str(worksheet.cell_value(row, 4))
- data_dict["longitude"] = str(round(worksheet.cell_value(row, 5)*3600000)) # Coordinates for OSS
- data_dict["latitude"] = str(round(worksheet.cell_value(row, 6)*3600000)) # Coordinates for OSS
- try:
- data_dict["location"] = str(translit.translify(worksheet.cell_value(row, 17)))
- data_dict["location_rus"] = str((worksheet.cell_value(row, 17)))
- except:
- data_dict["location"] = "Mordor"
- log_f(startname + ": rbs_name_error")
- pass
- try:
- data_dict["altitude"] = str(int(worksheet.cell_value(row, 13)))
- except location_rus:
- data_dict["altitude"] = "0"
- log_f(startname + ": altitude = 0")
- del workbook
- return data_dict
- # ----------------------------------------------------------------------
- # Extract_IP
- def extip():
- global ip_dict
- ip_dict = dict(duw_ip='Отсутсвует', lte_oam='Отсутсвует',
- tcu_ip='Отсутсвует')
- try:
- workbook = xlrd.open_workbook('../DB/MOS_IP_PLAN_V5_.xlsx')
- worksheet = workbook.sheet_by_name('IP план')
- for row in range(worksheet.nrows):
- data = (worksheet.cell_value(row,0))
- if str(startname) == str(data):
- for col in range(worksheet.ncols):
- ip_dict["duw_ip"] = (worksheet.cell_value(row, 7))
- ip_dict["lte_oam"]= (worksheet.cell_value(row, 12))
- ip_dict["tcu_ip"] = (worksheet.cell_value(row, 35))
- del workbook
- except:
- log_f(startname + ": error:" + traceback.format_exc())
- pass
- return ip_dict
- # ----------OSS-Config--------------------------------------------------
- # Writer
- def replace_tmpl(tmpl, var_list):
- lines = open(tmpl).readlines()
- src = "%s"*len(lines) % tuple(lines)
- for key, var in var_list.items():
- src = str.replace(src, key, var)
- return src
- def NE_Site_create():
- NE_Site = './template/NE_Site.txt'
- body = replace_tmpl(NE_Site, {'$userLabel': startname,
- '$altitude': data_dict["altitude"],
- '$location': data_dict["location"],
- '$longitude': data_dict["longitude"],
- '$latitude': data_dict["latitude"]
- })
- file = open("%s/01_OSS_Site_%s.xml" % (path, startname), "w")
- file.write(body)
- file.close()
- def NE_RBS_create():
- NE_RBS = './template/NE_RBS_create.txt'
- body = replace_tmpl(NE_RBS, {'$RNC': data_dict["rnc_id"],
- '$ManagedElementId': startname,
- '$associatedSite': startname,
- '$ipAddress': ip_dict["duw_ip"]
- })
- file = open("%s/02_NE_RBS_%s.xml" % (path, startname), "w")
- file.write(body)
- file.close()
- def NE_TCU_create():
- NE_TCU = './template/NE_TCU_create.txt'
- body = replace_tmpl(NE_TCU, {'$ManagedElementId': startname,
- '$associatedSite' : startname,
- '$ipAddress': ip_dict["tcu_ip"],
- '$RNC': data_dict["rnc_id"]
- })
- file = open("%s/03_NE_TCU_%s.xml"% (path, startname), "w")
- file.write(body)
- file.close()
- def NE_ERBS_create():
- NE_RBS = './template/NE_ERBS_create.txt'
- body = replace_tmpl(NE_RBS, { '$ManagedElementId': startname,
- '$associatedSite': startname,
- '$ipAddress': ip_dict["lte_oam"]
- })
- file = open("%s/04_NE_ERBS_%s.xml" % (path, startname), "w")
- file.write(body)
- file.close()
- # ----------------------------------------------------------------------
- # function for subprocess printout
- def unbuffered(p, stream='stdout'):
- newlines = ['\n', '\r\n', '\r']
- stream = getattr(p, stream)
- with contextlib.closing(stream):
- while True:
- out = []
- last = stream.read(1)
- # Don't loop forever
- if last == '' and p.poll() is not None:
- break
- while last not in newlines:
- # Don't loop forever
- if last == '' and p.poll() is not None:
- break
- out.append(last)
- last = stream.read(1)
- out = ''.join(out)
- yield out
- def ftp_ses():
- # -------------------------FTP-to-OSS-session---------------------------
- # Create script for WinSCP
- ftp_line = []
- try:
- FTP_commands = open("commandsftp.txt", "w")
- FTP_commands.write(
- """open ftp://%s:%s@%s:21
- option batch on
- option confirm off
- cd scripts
- put "../work_scripts\%s"
- exit
- """ % (user, password, HOST, startname))
- FTP_commands.close()
- # Start .com, for open new window use winscp.exe
- cmd = 'WinSCP.com /console /script=commandsftp.txt'
- p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True,)
- p.wait()
- for line in unbuffered(p):
- log_f(startname + ": ftp_load:" + line)
- ftp_line.append(line)
- os.remove("commandsftp.txt")
- except:
- log_f(startname + ": ftp_error:" + traceback.format_exc())
- pass
- return ftp_line
- def teln_ses(): # Telnet session for creating 3G oss elements
- try:
- tn = telnetlib.Telnet(HOST2)
- tn.read_until(b"login: ")
- tn.write(user.encode('ascii') + b"\n")
- if password:
- tn.read_until(b"Password: ")
- tn.write(password.encode('ascii') + b"\n")
- tn.read_until(("@%s>" % HOST2_name).encode('ascii'))
- tn.write(("/opt/ericsson/arne/bin/import.sh -f /home/%s/scripts/%s/01_OSS_Site_%s.xml -import"
- % (user, startname, startname)).encode('ascii') + b"\n")
- tn.read_until(("@%s>" % HOST2_name).encode('ascii'))
- tn.write(("/opt/ericsson/arne/bin/import.sh -f /home/%s/scripts/%s/02_NE_RBS_%s.xml -import"
- % (user, startname, startname)).encode('ascii') + b"\n")
- tn.read_until(("@%s>" % HOST2_name).encode('ascii'))
- if tcu:
- tn.write(("/opt/ericsson/arne/bin/import.sh -f /home/%s/scripts/%s/03_NE_TCU_%s.xml -import"
- % (user, startname, startname)).encode('ascii') + b"\n")
- else:
- tn.write(b"exit\n")
- print(tn.read_all().decode('ascii'))
- except:
- log_f(startname + ": telnet_3G_error:" + traceback.format_exc().encode('utf-8').decode('1251'))
- else:
- log_f(startname + ": telnet_3G_creation OK")
- def teln_ses_lte(): # Telnet session for creating LTE oss elements
- try:
- tn = telnetlib.Telnet(HOST_LTE)
- tn.read_until(b"login: ")
- tn.write(user.encode('ascii') + b"\n")
- if password:
- tn.read_until(b"Password: ")
- tn.write(password.encode('ascii') + b"\n")
- tn.write(("/opt/ericsson/arne/bin/import.sh -f /home/%s/scripts/%s/04_NE_ERBS_%s.xml -import"
- % (user, startname, startname)).encode('ascii') + b"\n")
- tn.read_until(("@%s>" % HOST_LTE_NAME).encode('ascii'))
- tn.write(b"exit\n")
- except:
- log_f(startname + ": telnet_4G_error:" + traceback.format_exc().encode('utf-8').decode('1251'))
- else:
- log_f(startname + ": telnet_4G_OK")
- # log writer
- def log_f(strr):
- log_file = open("../logfile.txt", "a")
- log_file.write(dt + strr + "\n")
- def main():
- app = QtGui.QApplication(sys.argv)
- window = uic.loadUi("window.ui") # type: <class 'PyQt4.QtGui.QWidget'>
- def initial():
- global startname
- startname = (window.lineEdit.text()).upper()
- try:
- data_dict = extdata()
- ip_dict = extip()
- window.plainTextEdit.appendPlainText(startname)
- window.plainTextEdit.appendPlainText("Адрес:%s" % data_dict["location_rus"])
- window.plainTextEdit.appendPlainText("Высота:%s" % data_dict["altitude"])
- window.plainTextEdit.appendPlainText("Долгота:%s" % data_dict["longitude"])
- window.plainTextEdit.appendPlainText("Широта:%s" % data_dict["latitude"] )
- window.plainTextEdit.appendPlainText("RNC:%s" % data_dict["rnc_id"])
- window.plainTextEdit.appendPlainText("3G IP:%s" % ip_dict["duw_ip"] )
- window.plainTextEdit.appendPlainText("TCU IP:%s" % ip_dict["tcu_ip"] )
- window.plainTextEdit.appendPlainText("4G IP:%s" % ip_dict["lte_oam"])
- except:
- log_f(startname + ": error:" + traceback.format_exc())
- pass
- def conf_scripts():
- startname = (window.lineEdit.text()).upper()
- initial()
- new_dir()
- NE_Site_create()
- NE_RBS_create()
- NE_ERBS_create()
- if window.checkBox.isChecked():
- NE_TCU_create()
- log_f(startname + ": scripts_gen")
- ftp_line = ftp_ses()
- for line in ftp_line:
- print(line)
- window.plainTextEdit.appendPlainText(line.encode('utf-8').decode('ascii'))
- def tln3g():
- global tcu
- if window.checkBox.isChecked():
- tcu = True
- else:
- tcu = False
- startname = (window.lineEdit.text()).upper()
- teln_ses()
- def tln4g():
- startname = (window.lineEdit.text()).upper()
- teln_ses_lte()
- # ------------------Buttons---------------------------------------------
- QtCore.QObject.connect(window.pushButton_4, QtCore.SIGNAL("clicked()"), initial)
- QtCore.QObject.connect(window.pushButton_3, QtCore.SIGNAL("clicked()"), conf_scripts)
- QtCore.QObject.connect(window.pushButton, QtCore.SIGNAL("clicked()"), tln3g)
- QtCore.QObject.connect(window.pushButton_2, QtCore.SIGNAL("clicked()"), tln4g)
- window.show()
- sys.exit(app.exec_())
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement