1

telegraf在测试中用作测量/监控工具。我需要telegraf自动编辑配置;因为所有测试都是自动执行的。

目前我正在使用re它来配置它;这是过程:

  1. 阅读整个文件内容。
  2. 使用正则表达式查找和编辑所需的插件/属性。
  3. 将整个更改的内容写入文件。

但是我正在寻找一个库(如果存在),ConfigParser或者reconfigure将配置作为对象而不是内容来处理。

我试过了ConfigParser.ConfigParserConfigParser.RawConfigParser而且ConfigParser.SafeConfigParser;全部返回:

ConfigParser.ParsingError: File contains parsing errors: /etc/telegraf/telegraf.conf

reconfigure库具有特定的配置类,每个都属于一种特殊类型的 linux 配置(例如FSTabConfigResolvConfig和一些其他类型),但它不包含配置类telegraf

有没有人有一个选择?

编辑1:

我尝试configobj了库(正如@KevinC 建议的那样),但它什么也没加载:

>>> import configobj
>>> c = configobj.ConfigObj('/home/zeinab/Desktop/config-modification/telegraf.conf', list_values=False)
>>> c
ConfigObj({})

使用list_values=True返回相同的结果。

4

2 回答 2

1

你可以使用toml

配置文件

[[inputs.ping]]
  ## Hosts to send ping packets to.
  urls = ["example.org"]
  method = "exec"

用法

import toml
conf = (toml.load("/etc/telegraf/telegraf.conf"))
conf.get("inputs")

输出

{'ping': [{'urls': ['example.org'], 'method': 'exec'}]}
于 2020-07-22T17:59:34.047 回答
0

您可以使用configobj,但必须指定 "list_values"=F​​alse

c = configobj.ConfigObj('/etc/telegraf/telegraf.conf', list_values=False)
于 2018-08-15T10:58:50.917 回答