Назад | Перейти на главную страницу

Как читать / изменять 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

Такие записи, как «версия tds» и «кодировка клиента» не поддерживаются линзой 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