保存来自路由器的TCP数据包的服务器

问题描述 投票:0回答:1

在这里寻求建议。

所以我有一家销售特定类型路由器的公司。其中一项功能是监视路由器的活动(即确保其“活动”)。我要求路由器制造商对它们进行编程,每隔 15 分钟向我的服务器 IP 地址、特定端口发送一个 TCP“ping”数据包,并提供非常基本的监控数据(路由器序列号、“我还活着”)细绳)。 我有一个在接收数据的静态 IP 上运行的 Windows 服务器。

我通过使用

netcat
发送数据包进行了测试,我可以看到它已正确接收。我使用名为 Packet Sender 的免费软件来打开特定的 TCP 端口并记录传入流量。

我现在需要做的是在我的服务器上运行代码来侦听特定端口,并将数据(路由器序列号、传输时间等)保存在数据库中。这样,客户稍后就可以登录他们的帐户,并查看路由器的“活动”。还有一些高级功能,例如每当服务器在 X 分钟/小时内没有从路由器接收到数据时通知客户等。

我正在寻求有关如何以最佳方式进行设置的建议。我读到了一些可以监听端口的简单 Python 代码(如这个答案),我想我可以用它来将数据保存到本地数据库。 但这是最好的吗?竞争条件(即多个路由器同时发送数据)怎么样?我想这些传输需要进入一些基本队列并被一一处理?有没有一些好的现有框架可以为我完成这一切?

任何有关如何实施这一点的建议都很好。我了解一些基本的 Python 后端编程。

python logging server network-programming
1个回答
0
投票

以下是如何使用 Python 和数据库设置服务器来监控路由器活动的快速概述:

  1. 服务器代码:

使用Python中的socket模块创建一个监听的TCP服务器 指定端口。

实现代码以从连接的路由器接收数据。

从路由器中提取路由器序列号和其他相关信息 收到数据。

将数据存储在带有时间戳的数据库(例如 MySQL、PostgrSQL)中 每个条目。

考虑使用像asynio或线程这样的库来处理多个 来自路由器的并发连接。

使用日志记录框架(如日志记录)来跟踪服务器活动和 潜在的错误。

  1. 数据库:

选择一个支持高效存储和检索的数据库 时间序列数据。

创建一个表,其中包含路由器序列号、时间戳、数据列 已收到,以及需要的任何其他信息。

实施一种机制(例如触发器)来自动更新 新数据到达时数据库。

  1. 处理竞争条件:

一次处理队列中的数据以避免冲突并确保 数据完整性。

  1. 附加功能:

实施通知系统(例如电子邮件、短信)来提醒客户 关于路由器不活动。

开发一个 Web 界面或 API 供客户查看其路由器的 活动日志和其他相关信息。

考虑使用现有的 Python 框架(如 Django 或 Flask)来构建 更强大且可扩展的应用程序。

  1. 推荐框架:

asyncio:用于异步编程和处理多个并发 连接。

MySQLb 或 psycopg2:用于与 MySQL 或 PostgreSQL 数据库交互, 分别。

Flask 或 Djago:用于构建 Web 界面或 API。

日志记录:用于记录服务器活动和错误。

后续步骤:

首先编写一个简单的 Python 脚本来演示基本功能(例如,从套接字读取数据并将其打印到控制台)。

考虑使用现有的库和框架来加速开发并提高代码质量。

在不同场景和多个路由器上彻底测试您的服务器,以确保可靠运行。

教程和东西:

Python 套接字编程教程:https://realpython.com/lessons/python->sockets-part-1-overview/

MySQLdb 文档:https://pymysql.readthedocs.io/

Flask 文档:https://flask.palletsprojects.com/

Django 文档:https://docs.djangoproject.com/en/5.0/

© www.soinside.com 2019 - 2024. All rights reserved.