smic

Компилятор базы управляющей информации (MIB)

Синтаксис:

smic [опции...] включаемый_файл

Поддерживаемые платформы:

Neutrino

Опции:

-0

Назначить в качестве файла сообщений (и ошибок) выходной файл.

-1

Вывести информацию об авторских правах.

-2

Вывести информацию о версии.

-3

Разрешить выражение INDEX в объектах.

-4

Разрешить нестандартный доступ для объектов.

-5

Разрешить состояние "optional".

-6

Не проверять имена таблиц, строк, последовательностей.

-7

Проверить все индексные элементы в последовательности.

-8

Вывести результат в формате MOSY.

-9

Вывести результат в расширенном формате MOSY.

-A

Выгрузить псевдонимы.

-B

Выполнить строгую проверку размера/диапазона индексных элементов.

-C

Проверить размер/диапазон.

-D

Выгрузить все.

-E

Разрешить проверку синтаксиса элементов последовательностей на соответствие текстовому соглашению.

-F файл

Имя выходного файла.

-G

Выключить предупреждения о неиспользуемых операторах IMPORT и текстовых соглашениях.

-J

Разрешить DEFVAL для Counter/Gauge.

-K

Выгрузить имена SMI.

-I

Вывести имена включаемых файлов.

-L

Выгрузить имена OID.

-M

Выгрузить имена модулей.

-N

Выгрузить дерево OID и trap-файлы.

-O

Выгрузить элементы OID.

-Q

Выгрузить последовательности.

-P

Выгрузить имена trap-файлов.

-R

Проверить объекты INDEX на наличие атрибута "только для чтения".

-S

Выгрузить таблицу строк.

-T

Выгрузить имена IMPORT.

-U

Вывести статистику использования ресурсов.

-V

Выгрузить текстовые соглашения.

-W

Выполнить строгую проверку синтаксиса последовательностей.

-X

Скрыть строки в сканере.

-Z

Вывести в файл в промежуточном формате.

включаемый_файл

Имя файла, содержащего информацию о порядке компиляции модулей.

Описание:

Утилита smic представляет собой компилятор базы управляющей информации (Management Information Base; MIB). Данную утилиту можно использовать для проверки синтаксиса модулей SNMP MIB. Строгость проверки может варьироваться. Для утилиты smic предусмотрены различные опции, определяющие выходные данные:
Компилятор MIB поддерживает:
Перед запуском smic необходимо получить модули MIB, подлежащие компиляции (модули ASN.1). Обычно модули MIB извлекаются из файлов RFC. Если в текстовом файле, содержащем MIB, также содержится какой-либо текст (до или после модуля MIB), этот лишний текст следует удалить из файла (см. mstrip). Эти модули MIB можно поместить в разные каталоги. Для определения каталогов, в которых присутствуют файлы модулей MIB, можно использовать переменную среды SMICINCL. Поиск начинается с текущего каталога. Пример.

setenv SMICINCL /usr/mibs/rfc:/usr/mibs/custom

После получения модулей MIB необходимо создать "включаемый файл MIB". Этот файл используется для определения компилируемых модулей и порядка их компиляции. Включаемые директивы должны быть упорядочены так, чтобы были определены все импортированные элементы (IMPORT) в ранее включенном модуле MIB. Также можно определить другие директивы (см. Включаемый файл).

После выполнения этих шагов можно запустить компилятор MIB smic:

smic включаемый_файл


Настройка проверки синтаксиса

Можно использовать различные опции, позволяющие управлять строгостью проверки синтаксиса компилятором и выходными данными компилятора:

Вывод информации о типах объектов и файлах, обработанных утилитой smic:

-A, -D, -I, -K, -M, -N, -O, -P, - Q, -S, -T, -V

Управление строгостью синтаксической проверки модулей MIB, выполняемой утилитой smic:

-3, -4, -5, -6, -7, -B, -C, -E, - G, -J, -R, -W

Подавление строк из описательных и ссылочных выражений в текстовых файлах MIB (при компиляции эти элементы занимают значительное пространство в памяти; эту опцию целесообразно использовать, если объем памяти ограничен):

-X

Вывод сгенерированных утилитой smic выходных данных в файл (вместо стандартного потока вывода (stdout), определенного по умолчанию):

-F


Включаемый файл

Включаемый файл может содержать нижеперечисленные директивы. Структура приведена в примере. Эти директивы также можно поместить в файлы MIB (но только между модулями MIB).

#help

Вывести список директив.

#include имя_файла

Включить имя_файла в компиляцию. имя_файла следует заключить в кавычки; файл может содержать несколько модулей MIB.

#aliasModule [модуль] [псевдоним]

Директивы alias определяют альтернативные имена для элементов в операторах IMPORT. К этим элементам относятся имена объектов и текстовых соглашений, а также имя модуля FROM. Для каждого модуля можно определить несколько псевдонимов. Например, если используется файл модулей MIB с именем RFC1271 и он получил новое имя RFC9999, то можно воспользоваться директивой aliasModule, чтобы не вносить изменения во все остальные файлы MIB:

#aliasModule RFC9999 RFC1271

#aliasSymbol [модуль] [объект] [псевдоним]

Эта директива используется аналогично директиве aliasModule. Если изменилось имя текстового соглашения, то можно определить псевдоним, при этом вносить изменения в другие файлы MIB не требуется. Для каждого символа можно определить несколько псевдонимов. Пример.

aliasSymbol RFC9999 OwnerStringXXX OwnerString

#pushOpt

Директива pushOpt сохраняет текущий набор опций компиляции (в дальнейшем этот набор опций можно изменить и использовать для других модулей MIB).

#popOpt

Директива popOpt восстанавливает последний сохраненный набор опций.

#addOpt опции

Директива addOpt добавляет опции компиляции (в кавычках) к текущему набору опций, используемому для компиляции модуля. Пример.

addOpt "3 4 5 g"

#removeOpt опции

Директива removeOpt удаляет опции компиляции (в кавычках) из текущего набора опций, используемого для компиляции модуля.

removeOpt "3 4 5 j"

#printOpt


Эта директива выводит текущий набор опций.

Примеры:

Допустим, что существуют шесть файлов, содержащих модули MIB. Сначала необходимо указать каталоги, в которых находятся эти файлы. Для этого используется переменная среды SMICINCL. Затем можно создать включаемый файл MIB:

#include "rfc1155.smi"

#include "rfc1212.smi"

#include "rfc1215.smi"

#include "rfc1213.mib"

#include "rfc1215.trp"


#pushOpt

#addOpt "c r w b 7"


#include "new.mib"


#popOpt


С помощью директив опций задается более строгая проверка синтаксиса новых модулей MIB. Затем можно запустить утилиту smic с любыми опциями компиляции и генерации выходных данных.