我怎样才能得到augtool(augeas)或类似的常用工具与freetds.conf工作,所以我可以在bash安装脚本自动化一些configuration?
这似乎不工作:
augtool print "/files/etc/freetds/freetds.conf"
但是,这是有效的(但由于某种原因,它使用无限透镜,而不是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或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
你可以在http://pastebin.com/Lt6GiXAJ看到我的freetds.conf
这是默认的freetds.conf,除了我在[global]部分添加了以下几行:
tds version = 8.0 client charset = UTF-8
ODBC镜头不支持“tds version”和“client charset”等条目,因为它们包含空格。 正如你所看到的,你不能使用IniFile.lns,因为这只包含原语。 但是,你可能会寻找另一个基于Ini的镜头。 以下将是一个很好的起点:
grep IniFile /usr/share/augeas/lenses/dist/* | grep --perl-regexp "\blet\s+entry\b"
也就是说,你应该search一个镜头,重新定义“进入”,以允许空间。 看来,rsyncd镜头做到这一点,所以你可以尝试:
augtool --noautoload --transform "rsyncd.lns incl /etc/freetds/freetds.conf" print /files/etc/freetds/freetds.conf