Как читать / изменяют freetds.conf (для ODBC) использующий augtool или подобный в сценарии удара?

Как я могу заставить augtool (augeas) или столь же общий инструмент работать с freetds.conf, таким образом, я могу автоматизировать некоторую конфигурацию в сценарии установки удара?

Это, кажется, не работает:

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
0
задан 22 January 2015 в 21:07
1 ответ

Такие записи, как "версия 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
1
ответ дан 4 December 2019 в 17:04

Теги

Похожие вопросы