Я пытаюсь заменить значения в файле /etc/nslcd.conf значениями в файле параметров.Есть два параметра, которые вызывают у меня столько боли.
base dc=example,dc=com
base group ou=groups,dc=example,dc=com
В файле параметров есть значения для этих двух переменных, например:
base = dc=company,dc=org
base group = ou=admingroups,dc=company,dc=org
Я перебираю каждый параметр после сохранения в словаре, подобном этому
for key in sorted(d):
item = key
print("Processing Key:", item)
with open ('/etc/nslcd.conf', 'r') as fr:
with open ('/tmp/nslcd_tmp', 'w+') as fw:
# Iterate through lines in nslcd.conf file
for line in fr:
# Some options are commented and some are not
itemy = '#' + item
if line.startswith(item) or line.startswith(itemy):
print('Replaced value for:', item)
fw.write(item + '' + d[item])
elif item == 'base group':
fw.write(item + '' + d[item])
else:
fw.write(line)
Проблема, с которой я столкнулся ... 1. Поскольку в файле есть такие ключи, как uri, которые упоминаются в файле несколько раз, мне приходится циклически проходить по всем строкам и заменять их все.
2. Итак,сначала проходит «base» и заменяет все строки, начинающиеся с «base», на «base dc = company, dc = org», и больше нет элемента «base group» для замены.
Как я могу сказать, что это не соответствует 'base' в 'base group'?Это не единственные элементы, которые я заменяю, поэтому я стараюсь сделать их как можно более общими.Спасибо.