Как читать / изменять freetds.conf (для ODBC), используя augtool или аналогичный в bash-скрипте?
Как получить 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.conf на http://pastebin.com/Lt6GiXAJ
Это файл по умолчанию freetds.conf, за исключением того, что я добавил следующие строки в [global]
раздел:
tds version = 8.0
client charset = UTF-8
1 ответ
Записи типа "tds version" и "client charset" не поддерживаются линзой ODBC, поскольку содержат пробелы. Как вы уже видели, вы не можете использовать 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