如何在vps上部署Bark通知ssh连接及资源监控脚本

    本期教程将教会大家如何在你的vps部署Bark服务来监控资源和ssh登录信息。

1. 安装必要工具

1
2
3
sudo apt update
sudo apt install curl jq
sudo apt install nano

2.在vps上创建system-monitor.sh脚本

在ssh终端输入:

1
sudo nano /usr/local/bin/system-monitor.sh

进入nano编辑器后将一下内容粘贴进去
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash

# 🛠️ 环境变量,防止系统找不到命令
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# 🔐 Bark 推送 Key 和图标 URL(请根据实际修改)
BARK_KEY="abcdefg1234567" # 替换为你的 Bark API Key
icon_url="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"

# 🔍 获取主机名
hostname=$(hostname)

# 🌐 1️⃣ 资源监控部分
MEMORY_THRESHOLD=60 # 内存使用率阈值(%)
CPU_THRESHOLD=65 # CPU 使用率阈值(%)

MEMORY_USAGE=$(free | awk '/Mem:/ {printf("%.0f", $3/$2 * 100)}')
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}' | awk -F. '{print $1}')

log_message=""

# 🔍 检查内存使用率
if [ "$MEMORY_USAGE" -ge "$MEMORY_THRESHOLD" ]; then
log_message+="内存占用率: $MEMORY_USAGE% (超过 ${MEMORY_THRESHOLD}%)。"
fi

# 🔍 检查 CPU 使用率
if [ "$CPU_USAGE" -ge "$CPU_THRESHOLD" ]; then
log_message+="CPU 占用率: $CPU_USAGE% (超过 ${CPU_THRESHOLD}%)。"
fi

if [ -n "$log_message" ]; then
log_message="【$hostname$log_message"
encoded_message=$(echo "$log_message" | jq -sRr @uri)
curl -s "https://api.day.app/$BARK_KEY/$encoded_message?icon=$icon_url&isCritical=1" &>/dev/null
echo "资源监控推送已发送"
fi

# 🌐 2️⃣ SSH 登录提醒部分
if [ -n "$SSH_CONNECTION" ]; then
ssh_ip=$(echo $SSH_CONNECTION | awk '{print $1}')
user_name=$(whoami)
ssh_message="【$hostname】SSH 登录警告: 用户 $user_name 从 IP $ssh_ip 登录"
encoded_ssh_message=$(echo "$ssh_message" | jq -sRr @uri)
curl -s "https://api.day.app/$BARK_KEY/$encoded_ssh_message?icon=$icon_url&isCritical=1" &>/dev/null
echo "SSH 登录提醒已发送"
fi

完成后按下Ctrl+X键,输入Y,回车即可保存并退出nano

3. 为system-monitor.sh赋予权限

1
sudo chmod +x /usr/local/bin/system-monitor.sh

4. 开机命令

分别在/etc/rc.local和/etc/profile中加上一下内容

1
sudo nano /etc/rc.local

把以下内容粘贴进去:

  • /usr/local/bin/system-monitor.sh
    1
    sudo nano /etc/profile
    把以下内容粘贴进去:
    1
    /usr/local/bin/system-monitor.sh
    Ctrl+X键,输入Y,回车即可保存并退出nano

5. 设置定时任务(用来定时检测资源占用情况)

每 5 分钟运行一次脚本:

1
crontab -e

输入以下内容:
1
*/5 * * * * /usr/local/bin/system-monitor.sh

  • */5 * * * *代表每5分钟执行一次,如有其他需求请自行更改。

检查日志,确认是否有定时任务运行,输入以下内容:

1
grep 'system-monitor.sh' /var/log/syslog

5. 验证脚本是否生效

输入以下内容:

1
sudo nano /usr/local/bin/system-monitor.sh

将MEMORY_THRESHOLD和CPU_THRESHOLD的值更改为1,以用来测试

  • MEMORY_THRESHOLD=1 # 内存阈值,单位为 %
  • CPU_THRESHOLD=1 # CPU 阈值,单位为 %
    依旧按下Ctrl+X键,输入Y,回车,保存并退出nano
    运行命令:
    1
    sudo /usr/local/bin/system-monitor.sh
    成功标志:
  • 如果内存或 CPU 使用率超过了阈值(1% 和 1%),会收到一条 Bark 通知。
  • 如果当前正处于 SSH 登录中,您也会收到 Bark 提醒。

6. 调整相应的参数来满足自己的需求

输入以下内容:

1
sudo nano /usr/local/bin/system-monitor.sh

将MEMORY_THRESHOLD和CPU_THRESHOLD的值更改为自己想要的数值

  • MEMORY_THRESHOLD=60 # 内存阈值,单位为 % 更改为自己想要的数值
  • CPU_THRESHOLD=60 # CPU 阈值,单位为 % 更改为自己想要的数值
    按下Ctrl+X键,输入Y,回车,保存并退出nano

末尾
    至此就已经完成了在服务器上部署Bark推送服务来监控ssh登录以及相关资源利用。如有相关问题可联系作者本人TG联系
    如您需引用此脚本请注明来源,在此万分感谢!