前言

在服务器的日常维护和蓝队的日常监控中,经常需要对服务器出现的各种问题进行及时的预警推送。国外的服务器推荐使用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,但使用方式大同小异。

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

推送方式

  • https://api.day.app/6cPxxxxxxxxxxxF4/推送内容
  • https://api.day.app/6cPxxxxxxxxxxxF4/推送标题/推送内容

参数

参数名 解释 其他
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/"        #此处填入私有IDdef 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/bashmessage="主机名:$(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. 关于云开发新服务“实时数据推送”,你需要了解的全在这了!

    "微信小程序工程师邓坤力带你了解如何利用千呼万唤始出来的云开发实时数据推送服务打造生动的小程序和小游戏!" 在数据库在小程序·云开发中的应用一文中,我们了解到实时数据推送作为云开发 ...

  2. .net 实时通信_基于 RabbitMQ 的实时消息推送

    实现服务器端推送的几种方式 Web 应用都是基于 HTTP 协议的请求/响应模式,无法像 TCP 协议那样保持长连接,因此 Web 应用就很难像手机那样实现实时的消息推送.就目前来看,Web 应用的消 ...

  3. 消息推送技术干货:美团实时消息推送服务的技术演进之路

    本文由美团技术团队分享,作者"健午.佳猛.陆凯.冯江",原题"美团终端消息投递服务Pike的演进之路",有修订. 1.引言 传统意义上来说,实时消息推送通常都是 ...

  4. 百亿级实时消息推送的实战之道,与王者荣耀一班车就是这么稳!

    要说现在市面上最火爆的手游,莫非拥有两亿注册用户的王者荣耀了.据悉,王者荣耀的渗透率高达22.3%,这意味着每7个中国人中就有一位是王者荣耀注册用户.众所周知,手游App对推送实时性和精准性要求非常高 ...

  5. 基于 RabbitMQ 的实时消息推送

    博主新开公众号"不太灵光的程序员" , 关注公众号,每日八点有干货推送 1 实现服务器端推送的几种方式 Web 应用都是基于 HTTP 协议的请求/响应模式,无法像 TCP 协议那 ...

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

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

  7. php通知websocket,php实现websocket实时消息推送

    php实现websocket实时消息推送,供大家参考,具体内容如下 SocketService.php /** * Created by xwx * Date: 2017/10/18 * Time: ...

  8. 苹果cms主动推送php,飞飞cms、海洋cms、苹果cms、maccms百度主动实时自动推送代码...

    飞飞cms.海洋cms.苹果cms.maccms百度主动实时自动推送代码 该代码适用于所有网站,不限于苹果cms.飞飞海洋等.其他帝国cms.wordpress等等都可以使用. 代码如下: (func ...

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

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

最新文章

  1. C++中的动态内存分配
  2. 那些重金投入区块链的互联网巨头,现在怎样了?|BCCon
  3. 架构师课程之-haproxy专业级负载均衡软件权威讲解
  4. adas--智能驾驶辅助系统
  5. 利用python画混淆矩阵
  6. ES6、TYPESCRIPT、ATSCRIPT和BABEL是什么玩意儿
  7. Underscore.js-精巧而强大实用功能库
  8. JavaScript引用类型之Array数组的concat()和push()方法的区别
  9. python画素描画_画画了,画画了,几行Python就成一幅素描画
  10. Excel数据转化为sql脚本
  11. 针对我国——国产数据库进行分析
  12. 电脑win10计算机图标,告诉你如何显示win10计算机图标
  13. 谷歌chromeos_如何安装Chrome OS系统
  14. iPhone 如何将图片转换为文字
  15. 2017春运抢票软件哪个好,教你看懂刷票原理!
  16. VMware清理vmdk文件
  17. 安装spark的详细步骤
  18. USACO16FEB:再探圆形谷仓(dp)
  19. vue项目导出word文件(根据word模板导出)
  20. 英文人名及含意(转)

热门文章

  1. 【历史上的今天】11 月 19 日:Microsoft Office 首次发布;谷歌开源 Chrome OS;Twitter 创始人出生
  2. 鸿蒙系统可以替代安卓吗,华为发布的鸿蒙系统,到底能不能替代安卓?
  3. 搜索推荐算法系列文章整理
  4. (转)IE和火狐的css兼容性问题归总
  5. .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比
  6. 蓝牙室内定位方案-灵思科
  7. php 没有后缀名下载,javascript - 没有后缀名的链接?
  8. FactoryBean of Spring
  9. google提供免费企业邮局
  10. 《视频直播技术详解》之(三):编码和封装