”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 Telegram 监控服务器

使用 Telegram 监控服务器

发布于2024-11-04
浏览:758

Monitor servers with Telegram

我们正在开发的 Telegram 新框架已经产生了第一个可用的后代。

我使用该框架在 Telegram 上创建了 HostWatchBot 聊天机器人,它允许我监控我的服务器,换句话说,它已经解决了我的“痛苦”,我相信这与许多其他人一样,这就是为什么我在此分享一下。

所有这些都在 Github 上的框架存储库中的开源代码中,我决定将其分享给那些想要更多地了解使用 Telegram 平台作为真正的“应用程序商店”的优势的人,而无需花费任何钱任何东西,并且无需太多努力即可适应那些只有Google
的东西 苹果对开发者的要求。换句话说,您的“应用程序”将以“机器人”的形式存在于 Telegram 中,快速、免费、无年费,并且可以轻松使用任何语言,甚至创建网络“迷你应用程序”。

所有这些都在移动、网络和桌面平台上进行,因为 Telegram 在所有这些平台上运行!

这里描述了我如何使用开源框架创建 HostWatchBot 示例聊天机器人:Telegram Bot Framework

您需要了解Python才能分析host_monitor_by_user.py脚本,该脚本是通过重用TlgBotFwk类编写的机器人。这是如何快速、轻松地使用这个框架的第一个实际例子,使用它的基类继承我们从头开始必须实现的所有标准命令。这使得机器人开发人员可以只专注于真正增加价值的功能,就像在本例中一样,其目标是创建一个 Telegram 机器人,充当看门狗,监控可能出现故障的服务器。

看源代码,比较简单,因为只需要使用“ping”来实现调度和主机开关检查。

这样,最终用户只需在聊天机器人中执行几个命令即可添加、删除或检查自动检查的进度:

添加要监控的主机(其中 60 是 ping 检查之间的时间间隔(以秒为单位)):

/pingadd host.com.br 60

切换是否显示肯定检查结果:

/togglesuccess

要从监视列表中删除主机,请使用聊天机器人中的命令:

/pingdelete host.com.br

要列出所有受监控的主机,只需使用命令:

/pinglist

当其中一台受监控的主机停止响应 ping 时,聊天机器人会立即发送警告。

有了这个,我能够在创纪录的时间内启动并运行这个聊天机器人,并且我已经从它“监控”我的服务器中受益;显然,这些服务器必须接受对 ping 的响应。

如果您想查看已在 Telegram 上运行的实时彩色机器人,请单击下面的链接:

https://t.me/HostWatchBot

或者去Github看源码,源码在框架的examples文件夹下:

https://github.com/gersonfreire/telegram-bot-framework/blob/main/examples/host_monitor_by_user.py

感谢您的阅读,请充分利用它,如果您愿意,请加入我们向社区开放的努力!

版本声明 本文转载于:https://dev.to/gersonfreire/monitor-servers-with-telegram-e7e?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • JavaScript 如何将数据发送到 MySQL 数据库?
    JavaScript 如何将数据发送到 MySQL 数据库?
    如何从 JavaScript 向 MySQL 数据库发送数据JavaScript 与其他编程语言不同,由于运行环境不同,无法直接与 MySQL 数据库通信。 JavaScript 在客户端(在 Web 浏览器中)运行,而数据库驻留在服务器端。为了弥补这一差距,必须使用 PHP、Java、.Net 或...
    编程 发布于2024-11-16
  • 如何通过 Spring 的 JDBCTemplate 有效地使用 IN() SQL 查询?
    如何通过 Spring 的 JDBCTemplate 有效地使用 IN() SQL 查询?
    使用 Spring 的 JDBCTemplate 进行有效的 IN() SQL 查询您有一个 IN() 查询,当前需要您构建一个包含多行的子句代码:StringBuilder jobTypeInClauseBuilder = new StringBuilder(); for(int i = 0; i...
    编程 发布于2024-11-16
  • 如何确保 C++ 中准确的浮点精度?
    如何确保 C++ 中准确的浮点精度?
    C 中的浮点精度 在 C 中处理浮点数时,必须了解其精度限制。考虑以下代码:double a = 0.3; std::cout.precision(20); std::cout << a << std::endl;结果是 0.2999999999999999889 而不是 0...
    编程 发布于2024-11-16
  • 如何使用反射来有效测试 Go 中具有相似签名的多个函数?
    如何使用反射来有效测试 Go 中具有相似签名的多个函数?
    在 Go 中利用反射进行功能单元测试当测试具有相似签名和返回值的多个函数时,为每个函数编写单独的测试是很乏味的。在 Go 中,反射可以提供一种解决方案来集体测试这些函数。问题概述考虑一组具有以下签名的函数(Func1,Func2,...): func YourFunction() (int, err...
    编程 发布于2024-11-16
  • 按值返回对象何时触发移动构造函数?
    按值返回对象何时触发移动构造函数?
    按值从函数返回类的对象考虑从函数返回类的对象的情况价值。在这种情况下,返回的对象通常被视为左值,这意味着它在内存中具有名称和地址。然而,某些情况下可能会导致返回的对象被视为右值,即没有名称或地址的临时对象。隐式移动规则C 定义了按值返回对象时可能应用的隐式移动规则。该规则规定,如果满足以下条件:返回...
    编程 发布于2024-11-16
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1和$array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求是构...
    编程 发布于2024-11-16
  • 当我的查询特别要求获取过去七天的数据时,为什么我只能获取过去五天的数据?
    当我的查询特别要求获取过去七天的数据时,为什么我只能获取过去五天的数据?
    检索最近7天的数据效率将数据从SQL Server传输到MySQL时,必须仅过滤掉相关数据。在这种情况下,提取最近 7 天的数据至关重要。然而,提供的 SQL 查询产生了意外结果。问题:缺少数据使用 GETDATE()-7 和 GETDATE() 筛选数据的查询仅检索到五天的数据结果。这种差异需要探...
    编程 发布于2024-11-16
  • 如何在 Go 中解析带有嵌套键值对的 YAML 文件?
    如何在 Go 中解析带有嵌套键值对的 YAML 文件?
    在 Go 中解析 YAML 文件在 Go 中解析 YAML 文件涉及利用 gopkg.in/yaml.v2 提供的 YAML 库。提供的代码旨在解析具有嵌套键值对的 YAML 文件,如下所示:firewall_network_rules: rule1: src: blabla...
    编程 发布于2024-11-16
  • For 与 forEach:JavaScript 数组迭代哪个最有效?
    For 与 forEach:JavaScript 数组迭代哪个最有效?
    JavaScript 效率:for 与 forEachJavaScript 提供了两种迭代数组中元素的常用方法:传统的 'for' 循环和较新的“.forEach”方法。在这两个选项之间进行选择取决于手头任务的效率、好处和具体要求。for 循环JavaScript 中的“for”循环...
    编程 发布于2024-11-16
  • 如何在 Go 中将消息打印到标准错误?
    如何在 Go 中将消息打印到标准错误?
    在 Go 中将消息打印到标准错误如果您需要与现有日志分开打印调试或测试日志,您可以考虑发送消息到标准错误流 (stderr)。当您想要隔离日志以便于分析时,这非常有用。打印到 stderr 的方法Go 中有多种方法可以将消息打印到 stderr:1。使用log.Logger:创建一个新的log.Lo...
    编程 发布于2024-11-16
  • 如何高效检索MySQL分组数据的首条和尾条记录?
    如何高效检索MySQL分组数据的首条和尾条记录?
    在MySQL中使用聚合函数检索分组数据的第一条和最后一条记录在MySQL中,当使用聚合函数从分组记录中获取数据时,检索该组的第一个和最后一个记录可能具有挑战性。虽然多个查询可以完成此任务,但对于大型表来说效率可能较低。为了优化此过程,MySQL 使用 GROUP_CONCAT 和 SUBSTRING...
    编程 发布于2024-11-16
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-16
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-16
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-16
  • JavaScript 中的交互:“警报”、“提示”和“确认”
    JavaScript 中的交互:“警报”、“提示”和“确认”
    **** 欢迎回到我们的 JavaScript 世界之旅!在这篇博文中,我们将探讨在 JavaScript 中与用户交互的三种基本方法:alert、prompt 和 confirm。这些方法分别允许您显示消息、收集用户输入和确认操作。让我们深入研究每种方法并看看它们是如何工作的。 ...
    编程 发布于2024-11-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3