I'm trying to replace values in /etc/nslcd.conf file with values in a parameters file. There are two parameters that are causing me so much heartache.
base dc=example,dc=com
base group ou=groups,dc=example,dc=com
The parameters file has values for these two variables like this
base = dc=company,dc=org
base group = ou=admingroups,dc=company,dc=org
I'm cycling through each parameter after storing them in a dictionary like this
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)
The problem I'm having...
1. Since there are keys such as uri that are mentioned multiple times in the file, I have to cycle through all the lines and replace all of them.
2. So, first 'base' goes through and replaces all lines beginning with 'base' with 'base dc=company,dc=org' and there is no more 'base group' item to replace.
How can I tell it not to match 'base' in 'base group'? These are not the only items I'm replacing and so I to keep it generic as much as possible. Thanks.