如何使用 augtool 或类似 bash 脚本读取/修改 freetds.conf(用于 ODBC)?

如何使用 augtool 或类似 bash 脚本读取/修改 freetds.conf(用于 ODBC)?

我如何让 augtool(augeas)或类似的常用工具与 freetds.conf 一起工作,以便我可以在 bash 安装脚本中自动执行某些配置?

这似乎不起作用:

augtool print "/files/etc/freetds/freetds.conf"

但是,这是有效的(但由于某种原因,它使用了 inifile 镜头,而不是 odbc 镜头):

augtool print "/files/etc/odbcinst.ini"

我已尝试过:

我也关注了这些说明尝试将 odbc 镜头与 freetds.conf 关联:

$ augtool --noload
augtool> set /augeas/load/odbc/lens odbc.lns
augtool> set /augeas/load/odbc/incl /etc/freetds/freetds.conf
augtool> load
augtool> print /files/etc/freetds/freetds.conf
augtool>

inifile我尝试了使用和 的IniFile各种组合来实现相同的效果,但load使用error: Lens not found Can not find lens IniFile.lns或 却失败了Can not find lens inifile.lns

其他信息:

错误:似乎没有任何提及 freetds 或 odbc 的错误:

$ augtool print "/augeas//error" | grep freetds
$ augtool print "/augeas//error" | grep -i 'freetds\|odbc'
$

版本:我在 Ubuntu 14.04 上。augtool --version显示augtool 1.2.0

freetds.conf 内容:

您可以在以下位置查看我的 freetds.confhttp://pastebin.com/Lt6GiXAJ

它是默认的 freetds.conf,除了我在该[global]部分中添加了以下几行:

    tds version = 8.0
    client charset = UTF-8

答案1

ODBC 镜头不支持“tds 版本”和“客户端字符集”等条目,因为它们包含空格。如您所见,您不能使用 IniFile.lns,因为它仅包含原语。但您可以寻找另一个基于 Ini 的镜头。以下将是一个很好的起点:

grep IniFile /usr/share/augeas/lenses/dist/* | grep --perl-regexp "\blet\s+entry\b"

也就是说,您应该搜索重新定义“entry”以允许空格的镜头。 rsyncd 镜头似乎可以做到这一点,因此您可以尝试:

augtool --noautoload --transform "rsyncd.lns incl /etc/freetds/freetds.conf" print /files/etc/freetds/freetds.conf

相关内容