我可以使用Python的ConfigParser库通过添加/etc/sysctl.conf
部分并覆盖ConfigParser的[dummy]
方法来阅读read()
,如下所示:
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
以下是我的问题:
答案 0 :(得分:2)
ConfigParser用于解析INI样式的配置文件。 /etc/sysconf.conf
不是这种文件。
如果你想要一个开箱即用的解析器,你可以使用Python的Augeas绑定:
import augeas
aug = augeas.Augeas()
aug.set('/files/etc/sysctl.conf/net.ipv4.ip_forwarding', '1')
aug.set('/files/etc/sysctl.conf/fs.inotify.max_user_watches', '8192')
aug.save()
文件的格式非常简单(只是<name> = <value>
行的集合,带有可选的注释)。