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.