AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 399882
Accepted
Tim Brigham
Tim Brigham
Asked: 2012-06-19 10:44:58 +0800 CST2012-06-19 10:44:58 +0800 CST 2012-06-19 10:44:58 +0800 CST

使用不带接头的 Augeas INI 镜头

  • 772

我正在使用带有 augeas 的 IniFile 模块来创建 Splunk 管理镜头。这适用于所有包含节标题的文件,如普通 INI 文件,但有几个文件不遵循此方案,仅使用名称=值对。

是否有一种现成的方法可以将这些条目映射到没有定义为通用内容(如 main)的部分?我宁愿不必为第二种文件类型学习另一个模块,因为目前有一种现成的方法可以避免它。

module Splunk =
  autoload xfm

  let comment  = IniFile.comment IniFile.comment_re IniFile.comment_default
  let sep      = IniFile.sep IniFile.sep_re IniFile.sep_default

  let setting   = IniFile.record_re
  let title     = IniFile.title ( IniFile.record_re  )
  let entry     = IniFile.entry steting sep comment
  let record    = IniFile.record title entry
  let lns       = IniFile.lns record comment

  let filter    = incl "/etc/splunk/*.conf"
  let xfm       = transform lns filter

  test lns get "[section]\ntest-value=yes\n" = ?
  test lns get "test=yes\n" = ?
puppet splunk augeas
  • 1 1 个回答
  • 1209 Views

1 个回答

  • Voted
  1. Best Answer
    Dominic Cleal
    2012-06-19T13:51:39+08:002012-06-19T13:51:39+08:00

    PHP lens 提供类似的功能,支持在 INI 文件中定义的部分之前进行设置。我已经将它应用到您的镜头中并修复了本应用于IniFile.entry_re避免歧义的“设置”镜头。

    module Splunk =
      autoload xfm
    
      let comment  = IniFile.comment IniFile.comment_re IniFile.comment_default
      let sep      = IniFile.sep IniFile.sep_re IniFile.sep_default
      let empty    = IniFile.empty
    
      let setting   = IniFile.entry_re
      let title     = IniFile.title ( IniFile.record_re - ".anon" )
      let entry     = IniFile.entry setting sep comment
      let record    = IniFile.record title entry
      let record_anon = [ label ".anon" . ( entry | empty )+ ]
    
      let lns       = record_anon | record*
    
      let filter    = incl "/etc/splunk/*.conf"
      let xfm       = transform lns filter
    
      test lns get "[section]\ntest-value=yes\n" = ?
      test lns get "test=yes\n" = ?
    

    将生成的树如下所示,该部分之外的所有设置都位于“.anon”节点下:

    Test result: splunk.aug:20.2-.31:
      { ".anon"
        { "test" = "yes" }
      }
    

    该节点对于避免放置方向的歧义是必需的。举个例子,如果你的任务是将这棵树写回到一个文件中:

    { "foo" }
    

    它可以写成[foo](一个部分名称)或foo=(一个部分外的设置)。“.anon”子树确保这个转换回来没有歧义。要删除它并拥有平面结构,您需要为每种类型的文件创建第二个模块/镜头,我认为这是一个更自然的解决方案。“.anon”节点在同一文件中存在混合的 PHP 情况下更有意义。

    完成并添加测试后,请务必将您的镜头提交给 Augeas 项目,我们很乐意将其包含在内。通过trac提交或发送到列表。

    • 4

相关问题

  • 如何修复 Puppet 完全限定的参数路径错误?

  • puppet:修改配置文件后强制重启服务

  • 木偶模块资源

  • 傀儡主机名问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve