gpt4 book ai didi

python - 使用 Python 的 ConfigParser 更新/etc/sysctl.conf

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:47 26 4
gpt4 key购买 nike

我可以使用 Python 的 ConfigParser 库来读取 /etc/sysctl.conf,方法是添加一个 [dummy] 部分并覆盖 ConfigParser 的 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

这是我的问题:

  1. 有没有一种优雅的方法可以让 ConfigParser 不添加这个 [dummy] 部分?如果我不得不再次打开此文件只是为了删除包含此虚拟部分的第一行,这似乎很奇怪。
  2. 也许 ConfigParser 不是编辑 sysctl.conf 的正确工具?如果有,是否有任何其他 Python 库允许从 Python 以方便的方式更新 sysctl.conf?

最佳答案

ConfigParser 是为解析 INI 风格的配置文件而设计的。 /etc/sysconf.conf不是这种文件。

您可以使用 Augeas如果您想要一个开箱即用的解析器,请为 Python 绑定(bind):

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> 行和可选注释的集合)。

关于python - 使用 Python 的 ConfigParser 更新/etc/sysctl.conf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com