Конфигурационный файл. Библиотека libconfig. Смотреть что такое "Конфигурационный файл" в других словарях
Сетевые устройства зависят от двух типов программного обеспечения для их работы: операционной системы и конфигурации. Как и операционная система на любом компьютере, операционная система сетевого устройства обеспечивает базовую работу аппаратных компонентов устройства.
Конфигурационные файлы содержат команды программного обеспечения Cisco IOS, используемые для настройки функциональности устройства Cisco. Команды анализируются (переводятся и выполняются) программным обеспечением Cisco IOS при загрузке системы (из файла конфигурации запуска) или когда команды вводятся в CLI во время режима конфигурации.
Администратор сети создает конфигурацию, которая определяет требуемую функциональность устройства Cisco. Конфигурационный файл обычно от нескольких сотен до нескольких тысяч байтов в размере.
Типы Конфигурационных файлов
Сетевое устройство Cisco содержит два конфигурационных файла:
Рабочий конфигурационный файл - используется во время текущей работы устройства
Конфигурационный файл запуска - используется в качестве резервной конфигурации и загружается при запуске устройства
Конфигурационный файл может также храниться удаленно на сервере в качестве резервной копии.
Конфигурационный файл запуска
Конфигурационный файл запуска (конфигурация запуска) используется во время системного запуска, чтобы сконфигурировать устройство. Конфигурационный файл запуска или файл конфигурации запуска хранится в энергонезависимой памяти RAM (NVRAM) . Так как NVRAM является энергонезависимой, когда устройство Cisco выключается, файл остается. Файлы конфигурации запуска загружаются в RAM каждый раз при запуске или перезагрузке маршрутизатора. Как только конфигурационный файл загружается в RAM, он считается рабочей конфигурацией .
Рабочая Конфигурация
Оказавшись в RAM, эта конфигурация используется, чтобы управлять сетевым устройством.
Рабочая конфигурация изменяется, когда администратор сети выполняет конфигурацию устройства. Изменение рабочей конфигурации сразу же влияет на работу устройства Cisco. После произведения любых изменений у администратора есть возможность сохранить изменения в файл конфигурации запуска, чтобы они использовались в следующий раз после перезапуска устройства.
Поскольку рабочий конфигурационный файл находится в RAM, он теряется, если питание устройства выключается или если устройство перезапускается. Изменения, произведенные в файле рабочей конфигурации, будут также потеряны, если они не будут сохранены в файл конфигурации запуска прежде, чем устройство будет выключено.
Конфигурационный файл
Конфигурационный файл
Конфигурационный файл - файл, в котором описываются:
- структура программной системы; и/или
- вспомогательные параметры, определяющие ее конкретную настройку.
Обычно конфигурационный файл реализуется в виде текстового файла, который интерпретируется программной системой.
См. также: Файлы
Финансовый словарь Финам .
Смотреть что такое "Конфигурационный файл" в других словарях:
конфигурационный файл - Бинарный или текстовый файл, содержащий информацию, которая определяет поведение приложения, компьютера или сетевого устройства. Тематики сети вычислительные EN configuration file … Справочник технического переводчика
Или конфигурационный файл используется для хранения настроек компьютерных программ, в том числе и операционных систем. Как правило, конфигурационные файлы имеют текстовый формат и могут быть прочитаны и отредактированы пользователем программы.… … Википедия
Файл конфигурации или конфигурационный файл используется для хранения настроек компьютерных программ, в том числе и операционных систем. Как правило, конфигурационные файлы имеют текстовый формат и могут быть прочитаны и отредактированы… … Википедия
Тип файловая система, шифрование Разработчик Valient Gough Операционная система Linux, FreeBSD, Mac OS Последняя версия 1.7.4 (5 сентября 2010) Лицензия G … Википедия
Страница статистики серверов … Википедия
Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. Дескриптор … Википедия
Btrieve программный продукт (СУБД), для организации транзакционных (или «навигационных») баз данных. Основан на методе организации данных ISAM, обеспечивающем высокую скорость поиска и извлечения данных. Существовало несколько версий… … Википедия
Opera Скриншот браузера Opera 9.6 Тип Браузер Разработчик Opera Software ASA Написана на … Википедия
У этого термина существуют и другие значения, см. PHP (значения). PHP Семантика: мультипарадигменный … Википедия
Настройки терминалов хранятся в конфигурационных файлах. Файлы текстовые, unicode-ные, их можно редактировать любым текстовым редактором, поддерживающим unicode, Notepad/Блокнот вполне подойдет. Полное описание всех допустимых в конфигурационных файлах параметров и их значений вы можете найти в методичке о параметрах конфигурационного файла .
Итоговая конфигурация терминала получается суммированием параметров из трех источников:
- Общесистемного конфигурационного файла all.wtc
- Индивидуального конфигурационного файла
- Подключаемых файлов согласно списка list.wtc (редактирование списка не поддерживается конфигуратором WTware)
Если терминал найдет свой МАК-адрес в списке list.wtc или найдет свой индивидуальный конфиг, то он попытается подключиться к терминальному серверу. Иначе будет запущен Мастер настройки терминала.
Общесистемный конфигурационный файл
Общесистемный конфигурационный файл называется all.wtc . Он ищется в каталоге Everyone в каталоге данных, который вы указали при инсталляции. В нашем случае это каталог C:\users\all users\WTware\Everyone\ . В него удобно записывать те параметры, которые имеют одинаковые значения для всех терминалов, например server .
Индивидуальный конфигурационный файл
Индивидуальные конфигурационные файлы хранятся в директории Terminals , которая находится в каталоге данных WTware, который вы указали при инсталляции. В нашем случае это каталог C:\users\all users\WTware\Terminals\ .
Терминал, сетевая карта которого имеет мак-адрес 00:01:02:aa:bc:8e , будет искать свою конфигурацию в каталоге МА.КА.ДР.ЕС.ТЕ.РМ , файл должен называться config.wtc . Обратите внимание на регистр букв, если ваш TFTP-сервер находится на Unix-машине!
Обратите также внимание на подключаемые файлы, находящиеся в каталогах Templates и Connections в каталоге данных WTware. С помощью директив template и connection вы сможете подключать к конфигурационному файлу терминала дополнительные файлы.
Список подключаемых файлов
В каталоге ListIncludes (в каталоге данных, указанном при инсталляции) находятся общие конфигурационные файлы с описаниями параметров терминалов, которые терминалы подключают через перечисление в файле list.wtc.
ВНИМАНИЕ! list.wtc предназначен только для ручного конфигурирования терминалов. Графический конфигуратор не читает list.wtc, не читает и не позволяет редактировать файлы из каталога ListIncludes. Поэтому нельзя пытаться настраивать один и тот же терминал и конфигуратором, и через list.wtc.Синтаксис полностью такой же, как и у конфигурационного файла. Указанные в list.wtc для терминала файлы из этого каталога будут приклеены к началу основного конфигурационного файла терминала перед тем, как терминал его прочитает. Поэтому в файлах в этом каталоге можно писать template, connection, next screen.
Список подключаемых файлов находится в файле Everyone/list.wtc . Формат строки в этом файле:
01:02:03:04:05:06[([имяпользователя@][имятерминала])] [файл [файл...]]] [# комментарий]Примеры: Означает, что терминал с мак-адресом 02:03:04:05:06:07 прочитает параметры из файла ListIncludes/file1 .
03:04:05:06:07:08(vasja@) file2Означает, что терминал с мак-адресом 03:04:05:06:07:08 прочитает параметры из файла ListIncludes/file2 и в окошко "Вход в Windows" подставит имя пользователя "vasja".
04:05:06:07:08:09(term5) file6 file7 # Комп замглавбуха.Означает, что терминалу с мак-адресом 04:05:06:07:08:09 будет присвоено имя term5, аналогично указанию параметра clienthostname , и он прочитает параметры из файлов ListIncludes/file6 и ListIncludes/file7 .
Чтобы можно было указывать имя пользователя русскими буквами, надо открыть этот файл в Notepad и сохранить с Encoding: Unicode.
Порядок чтения, приоритет значений
Конфигурационные файлы читаются в таком порядке:
- all.wtc
- Файлы, указанные в list.wtc
- Файлы, подключенные к конфигурации терминала через директивы template и connection
- Индивидуальный конфиг
Параметры переписываются по мере прочтения, и используется последнее значение. Т.е. если например параметр server указан в all.wtc и индивидуальном конфиге, то будет использовано значение из индивидуального конфига, потому что он прочитан позже.
- Recovery Mode
Введение
Как-то находясь в поиске как мне прикрутить конфигурационные ini файлы или json к моему сервачку перебирал варианты, но почему-то они были неудобны или слишком простые, или велосипеды. И хоть я люблю xml конфигурирование, но порою это чрезмерно огромные файлы и неудобно для небольшого количества настроек писать много текста. Раз задал другу вопрос по этой теме, он то мне и подкинул библиотеку. Напоминает она json в смеси с yaml.Библиотека имеет два интерфейса: функциональный и объектный. Они очень похожи, так как объектный использует внутри функциональную реализацию, но имеют некоторые различия, рассмотренные в данном посте.
Настройка и подключение
Библиотека есть во многих репозиториях, поэтому установка простая:$ sudo aptitude install libconfig8 libconfig8-dev libconfig++ libconfig++-dev
В исходниках С++ подключается одним лишь инклудом:
#include
или
#include
или для С
#include
Конфигурационный файл
Файл конфига представляет собой следующего вида структуру:# Example application configuration file version = "1.0"; application: { window: { title = "My Application"; size = { w = 640; h = 480; }; pos = { x = 350; y = 250; }; }; list = (("abc", 123, true), 1.234, (/* an empty list */)); books = ({ title = "Treasure Island"; author = "Robert Louis Stevenson"; price = 29.95; qty = 5; }, { title = "Snow Crash"; author = "Neal Stephenson"; price = 9.99; qty = 8; }); misc: { pi = 3.141592654; bigint = 9223372036854775807L; columns = [ "Last Name", "First Name", "MI" ]; bitmask = 0x1FC3; }; };
Основными видами записей в конфиге являются такие типы:
Элемент (Setting)Это минимальная значимая часть конфигурационной структуры и имеют вид ключ-значение:
name = value;
или
name: value
Группы (Groups)
Группы могут содержать любое число элементов, но каждый элемент должен содержать уникальный ключ в пределах группы. Записывается в фигурных скобках:
{ settings... }
Массивы (Arrays)
Содержат любое количество элементов, даже ноль, но все элементы состоят лишь из значений и должны иметь один и тот же скалярный тип в пределах массива. Записывает в квадратных скобках:
[ value, value ... ]
Списки (Lists)
Списки содержат ноль или более элементов скалярного типа, массивов, групп или списков. Записывается в круглых скобках:
(value, value ...)
Целочисленые значения (Integers)
Записываются обычным нам десятичным способом (±0-9) или шестнадцатиричном виде (0xA-f). Но целочисленные значения ограничены диапазоном -2147483648..2147483647 (32bit), но если нужны большие диапазоны, то в конце добавляется ’L’.
3578934
897893450934L
Дробные числа с плавающей запятой (floats)
Записывается тоже привычным нам способом
3.1415
Запись с экспонентой стандартная с "e".Булевые значения (Boolean)
Значения записываются как ’true’ или ’false’ и регистронезависимо (без кавычек, конечно).Строки (Strings)
Записываются в двойных кавычках как "Обычная длинная строка записанная для примера"
.
Следующие варианты в итоге дадут то же значение строки:
"Обычная длинная строка"
"записанная для примера"
"Обычная длинная строка" /* комментарий */ " записанная " // комментарий
"для примера"
.Комментарии
В конфиге возможны три привычных в С++ вида:- # однострочный до конца строки
- // тоже однострочный до конца строки
- /*… */ многострочный комментарий включая переносы строк
Внешние подключения (Includes)
Это, в общем, самая вкусная вкусняшка.
# file: quote.cfg
quote = "Criticism may not be agreeable, but it is necessary."
" It fulfils the same function as pain in the human"
" body. It calls attention to an unhealthy state of"
" things.\n"
"\t--Winston Churchill";
# file: test.cfg
info: {
name = "Winston Churchill";
@include "quote.cfg"
country = "UK";
};
name = value;
или
name: value
Группы (Groups)
Группы могут содержать любое число элементов, но каждый элемент должен содержать уникальный ключ в пределах группы. Записывается в фигурных скобках:{ settings... }
Массивы (Arrays)
Содержат любое количество элементов, даже ноль, но все элементы состоят лишь из значений и должны иметь один и тот же скалярный тип в пределах массива. Записывает в квадратных скобках:[ value, value ... ]
Списки (Lists)
Списки содержат ноль или более элементов скалярного типа, массивов, групп или списков. Записывается в круглых скобках:(value, value ...)
Целочисленые значения (Integers)
Записываются обычным нам десятичным способом (±0-9) или шестнадцатиричном виде (0xA-f). Но целочисленные значения ограничены диапазоном -2147483648..2147483647 (32bit), но если нужны большие диапазоны, то в конце добавляется ’L’.3578934 897893450934L
Дробные числа с плавающей запятой (floats)
Записывается тоже привычным нам способом3.1415
Запись с экспонентой стандартная с "e".
Булевые значения (Boolean)
Значения записываются как ’true’ или ’false’ и регистронезависимо (без кавычек, конечно).Строки (Strings)
Записываются в двойных кавычках как "Обычная длинная строка записанная для примера" .Следующие варианты в итоге дадут то же значение строки:
"Обычная длинная строка" "записанная для примера"
"Обычная длинная строка" /* комментарий */ " записанная " // комментарий "для примера" .
Комментарии
В конфиге возможны три привычных в С++ вида:- # однострочный до конца строки
- // тоже однострочный до конца строки
- /*… */ многострочный комментарий включая переносы строк
Внешние подключения (Includes)
Это, в общем, самая вкусная вкусняшка.# file: quote.cfg quote = "Criticism may not be agreeable, but it is necessary." " It fulfils the same function as pain in the human" " body. It calls attention to an unhealthy state of" " things.\n" "\t--Winston Churchill";
# file: test.cfg info: { name = "Winston Churchill"; @include "quote.cfg" country = "UK"; };
С API
В данной части я не стану расписывать все функции, только лишь основные, так как они в целом похожие, и основные нюансы.Описание использованых функций ниже
#include
Небольшое описание функционала
Полное описание в документации .config_t
- тип файла конфигурации (это ещё не запись). Грубо говоря, основной контейнер.
config_setting_t
- объект элемента конфигурации. В примере используется указатель, возвращаемый контейнером на искомый элемент.
int config_read_file
(config_t * config, const char * filename) - функция читает конфигурационный файл filename в память и заполняет объект типа config_t
. Можно не читать из файла, а сразу «скормить» строку в config_read_string() или отдать дескриптор файла в config_read()
int config_lookup_string
(const config_t * config, const char * path, const char ** value) - ищет и возвращает значение в виде указателя на строку value
, по заданному пути path
внутри конфига config
.
config_setting_t * config_lookup
(const config_t * config, const char * path) - ищет запись внутри конфига по заданному внутреннему пути и возвращает её.
config_setting_t * config_setting_get_elem
(const config_setting_t * setting, unsigned int index) - используется для массивов, списков чтобы возвращать из него элементы с таким-то номером по порядку
int config_setting_lookup_string
(const config_setting_t * setting, const char * name, const char ** value) -
возвращает значение value
дочернего элемента name
относительно заданной записи setting
Когда же надо получить значение в конкретно заданной записи, то используются функции типа
int config_setting_get_int
(const config_setting_t * setting)
C++ API
Тот же пример, но на С++. Полная документация на сайте #include
Тут тот же принцип, что и в функциональном стиле, только перед получением данных из конфига необходимо получать корневой элемент cfg.getRoot();
и уже потом от него обращаться к остальным элементам. Так же надо быть внимательным к тому, что практически на все ошибки кидаются исключения