php - 在 SNMP oid 上正确排序

标签 php mysql python-3.x datatables sqlalchemy

我已经搜索并尝试了很多方法,但找不到解决方案。

我将一些 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/

相关文章:

php - 使用分页查看目录中的文件 - php

php - 如何创建对表单的自动更新响应

php - 全文搜索功能未按预期工作

php - mysql 从两个不同的表中选择。

python - 执行逻辑运算并同时添加数据帧的新列?

postgresql - psycopg2.ProgrammingError : syntax error at or near "stdin" error when trying to copy_from redshift

php - 三元运算符左关联

php - PDO 设置 PDO::MYSQL_ATTR_FOUND_ROWS 失败

php - 当 mysql_query 返回 false 时

python - 如何在类启动中删除不需要的参数?