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

我怎样才能得到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> 

我尝试了与inifileIniFile相同的各种组合,但load失败, error: Lens not found Can not find lens IniFile.lns Can not find lens inifile.lnsCan 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内容:

你可以在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