我如何让 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