Итерация файла Python через один и тот же файл, расположенный на разных серверах, с изменением 5 параметров - PullRequest
0 голосов
/ 21 марта 2019

Мне нужно создать скрипт Python, который подключается к БД MS-SQL (это завершено и извлекает необходимую информацию), извлекает список IP-адресов из таблицы и использует его для завершения пути к серверу для поискаопределенный файл на каждом сервере, затем внесите изменения в 5 параметров этого файла, затем перейдите к следующему серверу и сделайте те же изменения и так далее.Любая помощь в создании итерации будет более чем приветствоваться. На данный момент у меня есть следующее:

import pyodbc
####   --->>>Connection to SQL Server
conn = pyodbc.connect('Driver={SQL Server};'
                          'Server=****Mi servidor****;'
                          'UID=***Usuario****;'
                          'PWD=***password***;'
                          'database=voiceData;'
                          'Trusted_Connection=yes;'
                          )

cursor = conn.cursor()
cursor.execute('EXECUTE dbo.GET_localOfficeAvayaFilePaths')


####  --->>>Changes on the 46xxsettings.txt file
for row in cursor:
    print('', row[3])
    string_map = {'## SET SLMSRVR': 'SET SLMSRVR 192.168.1.1', 
                  '## SET SLMSTAT 1': 'SET SLMSTAT 1',
                  '## SET SLMPERF 1': 'SET SLMPERF 1',
                  '## SET SLMCAP 1': 'SET SLMCAP 2',
                  'SET SLMCTRL 1': 'SET SLMCTRL 1'}

    for line in cursor.readlines():
        if line.startswith('## SET'):
            for original, new in string_map.items():
                if original in line:
                    line = new
                    break
        print(line.strip())

cursor.close()
del cursor

1 Ответ

0 голосов
/ 28 марта 2019

Я не совсем уверен, чего вы пытаетесь достичь,

Если вы запрашиваете базу данных, чтобы получить список из 5 IP-адресов, предположим, вы сохранили ее в переменной с именем 'ips_list',

Затем, как вы сказали, вы хотели бы добавить постоянный путь к IP-адресу и загрузить файл,

Затем отредактируйте (я предполагаю) 5 строк в этом файле конфигурации,

Вы не упомянули, что вы собираетесь делать с этим файлом, для простоты я просто сохранил его с соответствующим именем.

Посмотрите на следующий код:

import urllib.request

FILE_PATH = "http://{}/path/to/file.ini"
STRING_MAP = {"## SET SLMSRVR": "SET SLMSRVR 192.168.1.1", 
        "## SET SLMSTAT 1": "SET SLMSTAT 1",
        "## SET SLMPERF 1": "SET SLMPERF 1",
        "## SET SLMCAP 1": "SET SLMCAP 2",
        "SET SLMCTRL 1": "SET SLMCTRL 1"}

def func(ips_list):
    for ip_address in ips_list: # Assume: type(ip_address) == str
        conf_file = urllib.request.urlopen(FILE_PATH.format(ip_address)).read() # You should handle exceptions
        with open("./conf_files/{}/.ini".format(ip_address), "w", encoding="utf8") as outfile:
            for line in conf_file.splitlines():
                for key in STRING_MAP:
                    if line.startswith(key):
                        line = STRING_MAP[key]
                        break
                outfile.write(line)
...