Зачем так странно делать? Нет, я предлагаю что-то типа такого:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from os import linesep, rename
def update(fname, repl):
new_name = '%s.new' % fname
with open(fname) as inf, open(new_name, 'w') as outf:
for line in inf:
name = line.split('=')[0].strip()
if name in repl:
line = "%s=%s%s" % (name, repl[name], linesep)
outf.write(line)
rename(new_name, fname)
return 0
def main(argv):
fname = argv[1]
params = argv[2:]
return update(fname, dict(zip(params[::2], params[1::2])))
if __name__ == '__main__':
sys.exit(main(sys.argv))
Запускать например так:
./updater.py rc.conf interface eth0 address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1
PS: Естетственно парсинг и валидация параметров отсутствует, это чисто чтобы идею показать.