Linux

如何在 bash 腳本中使用 augtool 或類似工具讀取/修改 freetds.conf(用於 ODBC)?

  • July 4, 2015

如何獲得 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我用and嘗試了IniFile不同的組合,但是用orload失敗了。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 內容:

你可以在http://pastebin.com/Lt6GiXAJ看到我的 freetds.conf

它是預設的 freetds.conf,除了我在該[global]部分中添加了以下幾行:

   tds version = 8.0
   client charset = UTF-8

ODBC 鏡頭不支持諸如“tds 版本”和“客戶端字元集”之類的條目,因為它們包含空格。如您所見,您不能使用 IniFile.lns,因為它只包含原語。但是您可能會尋找另一個基於 Ini 的鏡頭。以下將是一個很好的起點:

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

也就是說,您應該尋找一個重新定義“入口”以允許空間的鏡頭。rsyncd 鏡頭似乎是這樣做的,所以您可以嘗試:

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

引用自:https://serverfault.com/questions/661465