Как читать / изменять 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 foundCan 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
Другие вопросы по тегам