前言

在服务器的日常维护和蓝队的日常监控中,经常需要对服务器出现的各种问题进行及时的预警推送。国外的服务器推荐使用telebot,而国内由于特殊的网络环境,则推荐使用BARKChanify等进行推送。


Telebot推送

首先需要一个telegram的账号,点此 。在对话框中输入/newbot,根据提示输入机器人的nameusername,创建完成后会返回一个token,务必牢记。token类似如下:

5229xxxxxx:AAFAxxxxxxxxxxxxxxxxx1MJ4OY0

接着在该机器人的对话框下输入任意信息,接着按照以下方式获取自己telegram的用户id

# curl方式。{token}替换为上面的token
proxychains4 curl https://api.telegram.org/bot{token}/getUpdates # python方式。
import requests
resp = requests.get("https://api.telegram.org/bot{token}/getUpdates")
print(resp.json())

请求后会返回类似如下json内容

{"ok":true,"result":[{"update_id":324xxxx11,"message":{"message_id":3,"from":{"id":100xxxx661,"is_bot":false,"first_name":"xxxx","last_name":"xxxx","username":"xxxx","language_code":"zh-hans"},"chat":{"id":100xxxx661,"first_name":"xxxx","last_name":"xxxx","username":"xxxx","type":"private"},"date":1647093375,"text":"haha"}}]}%

其中的id字段是我们所需要的,既我们自己的telegram账号的chat_id

python的简单用法如下:

安装依赖 pip install pyTelegramBotAPI

import telebot
bot = telebot.TeleBot(token="522xxxx:xxxxxxxxxOY0")
bot.send_message(chat_id="xxxxxx",text="haha123")

走代理跑

proxychains4 python3 telebot.py

可以看到,机器人已经给我们发来了指定的信息。当然除了发送文本信息,还可以发送图片、链接等,但这个不常用,就不做过多介绍了,各位师傅可以自己探索。

对于境外vps或者是网络环境允许的情况来说,Telebot是最好不过的预警推送方式。但是由于国内复杂的网络环境,这显然是不合理的。

因此这里尝试使用BARK这个免费开源的消息推送工具进行预警推送,虽然其功能较Telebot简陋一些,但起到基础的消息推送功能还是没有问题的。


BARK推送

先来看BARK的用法。BARK他会给每个账号提供一个私有ID,以GET方式请求 加上一定量参数即可。但同时带来的缺点就是由于get方式请求的url长度有限,因此不宜推送过长的内容。如对此有特殊要求,可使用如Chanify等其他app,但使用方式大同小异。

如果对于隐私要求高,可以在自己的私人服务器进行部署

推送方式

参数

参数名 解释 其他
sound 推送铃声 minuet、alarm等
isArchive 自动保存通知消息 1、0 设置为1则会自动保存,其他值则不会
icon 推送图标 [url] 需IOS15或以上
group 推送消息分组 [groupName]
level 时效性通知 active、timeSensitive、passive active:系统立即亮屏;timeSensitive:时效性通知,可在专注模式下显示通知;passive:仅将通知添加到通知列表,不会亮屏显示。
url 跳转 [url] 携带该参数时,点击推送会跳转到这个URL
copy 拷贝 [String] 携带该参数时,将只复制copy参数的值
badge 推送角标 [Num] 推送角标

测试

利用Python进行测试:

import requests
url = "https://api.day.app/6cPxxxxxxxxxxxF4/" #此处填入私有ID def sendMessage(title,text,icon=""):
requests.get(f'{url+title}/{text}?icon={icon}') sendMessage(title='Warning',text='Your server has been invaded',icon="https://th.bing.com/th/id/OIP.PnLgsfgLeK-s0mUrQOeonwAAAA?w=176&h=180&c=7&r=0&o=5&dpr=1.8&pid=1.7")


实战

写个shell脚本,让每次终端连接时都执行,放到/etc/profile.d中。这样当我们的服务器被意外连接时就能及时收到推送。

注意,由于url中不能存在空格,因此要把空格进行url编码

echo $string | sed 's/ /%20/g'

#!/bin/bash

message="主机名:$(hostname) 时间:$(TZ=UTC-8 date) 登陆用户:$(whoami) 当前所有登陆用户:$(who) 其他信息:$(w|awk 'BEGIN{OFS=" "}{print $1,$8}')"

curl "https://api.day.app/6cxxxxxxxxxF4/$(echo $message | sed 's/ /%20/g')?icon=https://th.bing.com/th/id/OIP.PnLgsfgLeK-s0mUrQOeonwAAAA?w=176&h=180&c=7&r=0&o=5&dpr=1.8&pid=1.7" &>/dev/null

这样,当某一个用户被远程登录连接时我们的手机就会收到实时的预警推送。


拓展

另外可以结合ssh蜜罐技术,或者是结合系统和中间件日志,对网页被篡改、被挂黑链、数据库篡改、主机出现其他用户等各种异常情况进行及时预警。

利用BARK和Telebot进行VPS实时预警推送的更多相关文章

  1. 【js学习】js连接RabbitMQ达到实时消息推送

    js连接RabbitMQ达到实时消息推送 最近在自己捯饬一个网站,有一个功能是需要后端处理完数据把数据发布到MQ中,前端再从MQ中接收数据.但是前端连接MQ又成了一个问题,在网上搜了下资料,点进去一篇 ...

  2. 开源实时消息推送系统 MPush

    系统介绍 mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点.同时也是少有的 ...

  3. 基于socket.io的实时消息推送

    用户访问Web站点的过程是基于HTTP协议的,而HTTP协议的工作模式是:请求-响应,客户端发出访问请求,服务器端以资源数据响应请求. 也就是说,服务器端始终是被动的,即使服务器端的资源数据发生变化, ...

  4. Worktile中百万级实时消息推送服务的实现

    Worktile中百万级实时消息推送服务的实现 出自:http://blog.jobbole.com/81125/

  5. C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表

    本文主要是我在刚开始学习 SignalR 的技术总结,网上找的学习方法和例子大多只是翻译了官方给的一个例子,并没有给出其他一些经典情况的示例,所以才有了本文总结,我在实现推送简单的数据后,就想到了如何 ...

  6. 实时数据推送webSocket

    实时数据推送 在Web或移动项目中,服务器向客户端实时推送消息是一种常见的业务需求. 实现方式 Polling:轮询(俗称“拉”),即定期重新请求数据. Long-Polling:长轮询,是 Poll ...

  7. 未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

    前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在 <springboot ...

  8. 我有 7种 实现web实时消息推送的方案,7种!

    技术交流,公众号:程序员小富 大家好,我是小富- 我有一个朋友- 做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里 ...

  9. 前端 与 RabbitMQ 实时消息推送实践

    web 页面的未读消息(小红点)怎么实现比较简单,之前说过可以用 rabbitmq 的 MQTT 协议做智能家居的指令推送,里边还提到过能用 MQTT 协议做 web 的消息推送,而未读消息(小红点) ...

  10. 7种实现web实时消息推送的方案

    做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能. 不过他还没想好用什么方式做,这里我帮他整理了一下几种方案,并简单做了实现. 什么是消息推送(pus ...

随机推荐

  1. 将自签名创建的ca证书 添加到linux的授信证书列表的办法

    第一步: 将ca 证书 从cert 格式转换成pem格式 openssl x509 -in ca.crt -out ca.pem -outform PE 第二步: 将ca 证书导入至系统中来 cat ...

  2. STM32CubeMX教程24 WDG - 独立窗口看门狗

    1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) 野火DAP仿真器 keil µVision5 IDE(MDK-Arm ...

  3. 我们开源了一个 Ant Design 的单元测试工具库

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:佳岚 欢迎大家点一个小小的 Star ant-design ...

  4. SqlSugar新增数据

    1.插入方式 1.1 单条插入实体 //返回插入行数 db.Insertable(insertObj).ExecuteCommand(); //都是参数化实现 //异步: await db.Inser ...

  5. 【编写环境一】遇到常见python函数处理方式

    1.python实现两个一维列表合并成一个二维列表 >>> list1 = [1,2,3,4,4] >>> list2 = [2,3,4,5,2] >> ...

  6. 《字节码编程》PDF107页,11万字。既然市面缺少ASM、Javassist、Byte-buddy成体系的学习资料,那我来!

    作者:小傅哥 博客:https://bugstack.cn - 汇总系列原创专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 让人怪不好意思的,说是出书有点膨胀,毕竟这不是走出版社的流程,选题. ...

  7. PVE上启用Intel核显的SR-IOV vGPU

    介绍 Intel SR-IOV vGPU是一种硬件虚拟化技术,它允许多个虚拟机共享单个物理GPU,而不会降低性能.SR-IOV定义了一种标准方法,通过将设备分区为多个虚拟功能来共享物理设备功能.每个虚 ...

  8. .NET Core开发实战(第25课:路由与终结点:如何规划好你的Web API)--学习笔记(下)

    25 | 路由与终结点:如何规划好你的Web API 自定义约束实现了路由约束接口,它只有一个 Match 方法,这个方法传入了 Http 当前的 httpContext,route,routeKey ...

  9. Pandas练习

    背景介绍 本数据集包括了2015年至2017年我国36个主要一线城市.特区的一些年度数据,包括产值.人口.就业.教育.医疗.经济贸易.房地产投资等方面. 包含文件: 2015年国内主要城市年度数据.c ...

  10. 华为云GaussDB支撑农行超级网银业务,性能和稳定性备受认可

    数据库作为数据驱动业务创新和智慧银行建设的关键基础设施,在银行数字化变革中具有举足轻重的作用. 在金融科技发展和国家政策引领下,银行纷纷加快推进数字化转型时代,正在经历一场以科技引领.数据赋能.数字经 ...