我已经搜索并尝试了很多方法,但找不到解决方案。
我将一些 SNMP OID 存储在数据库中,并将它们显示在带有数据表的表格中。
我希望 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
在存储 OID 字符串的列上使用 order by 的 SQL 查询将对它们进行排序:
1.3.6.1.2.1.1
1.3.6.1.2.1.10
1.3.6.1.2.1.2
我正在使用 PHP 或最好是 python Flask 进行服务器端处理。目前,我正在 Flask 中自己构建表,并编写了一个函数,通过将 OID 转换为元组并排序来对它们进行排序。这可行,但我想使用数据表来获得分页和响应能力。
需要注意的一件事是 OID 的长度没有限制。
任何想法将不胜感激。
最佳答案
这是一种黑客攻击,但它可能会起作用。如果 OID 中的每个元素的最大值 < 100,则在数据库中创建第二列,其中每个元素都转换为 2 位 0 填充的值:
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
您甚至可以消除句点以节省空间,一旦您测试过,一切正常。
关于php - 在 SNMP oid 上正确排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55005615/