Linux
如何在 bash 腳本中使用 augtool 或類似工具讀取/修改 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
我用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