Заказывать правильно по SNMP oids - PullRequest
0 голосов
/ 05 марта 2019

Я искал и пробовал много вещей, но не могу найти решение.

Я храню некоторые OID SNMP в базе данных и отображаю их в таблице с таблицами данных.

Я хочу, чтобы идентификаторы OID отображались в правильном порядке, например:

1.3.6.1.2.1.1
1.3.6.1.2.1.10
1.3.6.1.2.1.2

В правильном порядке:

1.3.6.1.2.1.1
1.3.6.1.2.1.2
1.3.6.1.2.1.10

Запрос SQL с порядком по столбцухранение строки OID упорядочит их:

1.3.6.1.2.1.1
1.3.6.1.2.1.10
1.3.6.1.2.1.2

Я использую обработку на стороне сервера с использованием PHP или, предпочтительно, флакона Python.В настоящее время я сам создаю таблицу в фляге и написал функцию, которая упорядочивает их путем преобразования OID в кортежи и сортировку.Это работает, но я хотел бы использовать таблицы данных, чтобы получить нумерацию страниц и отзывчивость.

Следует отметить, что нет ограничения на длину OID.

Любые идеи будутвысоко ценится.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Сначала разбейте строку на период и приведите тип к int.Затем используйте sorted и operator.itemgetter для сортировки по нескольким атрибутам.Затем снова присоединитесь, используя точку.Примерно так:

original_oids = [...]
split_and_typecast_oids = [map(int, oid.split(".")) for oid in original_oids]
sorted_oids = sorted(split_and_typecast_oids, operator.itemgetter(1,2,3,4,5,6,7))
rejoined_oids = [".".join(map(str, oid)) for oid in sorted_oids]
0 голосов
/ 05 марта 2019

Это что-то вроде хака, но это может сработать. Если каждый элемент в OID имеет максимальное значение <100, то создайте второй столбец в базе данных, где каждый элемент преобразуется в двухзначное 0-заполненное значение: </p>

real_oid           sorting_oid
1.3.6.1.2.1.1      01.03.06.01.02.01.01
1.3.6.1.2.1.10     01.03.06.01.02.01.10
1.3.6.1.2.1.2      01.03.06.01.02.01.02

Вы можете даже исключить периоды, чтобы сэкономить место, после того, как вы проверили, что все работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...