」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 Telegram 監控伺服器

使用 Telegram 監控伺服器

發佈於2024-11-04
瀏覽:332

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: bla...
    程式設計 發佈於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.Logg...
    程式設計 發佈於2024-11-16
  • 如何有效率地檢索MySQL分組資料的首條和尾條記錄?
    如何有效率地檢索MySQL分組資料的首條和尾條記錄?
    在MySQL中使用聚合函數檢索分組資料的第一條和最後一筆記錄在MySQL中,當使用聚合函數從分組記錄中取得資料時,檢索該組的第一個和最後一個記錄可能具有挑戰性。雖然多個查詢可以完成此任務,但對於大型表來說效率可能較低。 為了優化這個過程,MySQL 使用 GROUP_CONCAT 和 SUBSTRI...
    程式設計 發佈於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
  • 為什麼 Go 中不能轉換不同類型的切片?
    為什麼 Go 中不能轉換不同類型的切片?
    為什麼不能轉換切片型? 無法轉換不同類型的切片(如提供的程式碼片段所示)是由於特定類型轉換造成的Go 規範中概述的規則。這些規則控制何時可以將非常量值轉換為特定類型。 沒有任何轉換規則適用於您嘗試將 Bar 切片轉換為 Foo 切片的情況。雖然 Foo 和 Bar 的底層類型相同,但它們各自切片的底...
    程式設計 發佈於2024-11-16
  • \“Laravel SQLSTATE [HY000] [2002]連線被拒絕:為什麼\'localhost \'修復了問題?\”
    \“Laravel SQLSTATE [HY000] [2002]連線被拒絕:為什麼\'localhost \'修復了問題?\”
    “Laravel SQLSTATE[HY000] [2002] 连接被拒绝”:MySQL 连接深度之旅Web 领域开发中,Laravel 是优雅和高效的灯塔。然而,当连接到数据库时,可能会出现意想不到的障碍,例如臭名昭​​著的“连接被拒绝”错误。考虑以下场景:您已经努力将 Laravel 项目部署到...
    程式設計 發佈於2024-11-16

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3