Я могу использовать библиотеку Python ConfigParser для чтения /etc/sysctl.conf
, добавив раздел [dummy]
и переопределив метод read()
ConfigParser следующим образом:
class SysctlConfigParser(ConfigParser.ConfigParser):
def read(self, fn):
text = open(fn).read()
contents = StringIO.StringIO("[dummy]\n" + text)
self.readfp(contents, fn)
Теперь сложнее всего записать обратно обновления конфигурации, сделанные моей программой на Python, потому что, если бы я сейчас вызвал ConfigParser.write()
напрямую, он также добавил бы обратно этот раздел [dummy]
:
[dummy]
net.netfilter.nf_conntrack_max = 313
net.netfilter.nf_conntrack_expect_max = 640
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 5
Вот мои вопросы:
- Есть ли элегантный способ заставить ConfigParser не добавлять этот [фиктивный] раздел? Кажется странным, если бы мне пришлось снова открыть этот файл, чтобы удалить первую строку, содержащую этот фиктивный раздел.
- Может быть, ConfigParser - неподходящий инструмент для редактирования sysctl.conf? Если да, то есть ли другие библиотеки Python, которые позволили бы обновлять sysctl.conf удобным способом из Python?