1. 首页
  2. 技术
  3. Linux

利用宝塔api实现系统占用监控

vps必须安装bt6.8以上版本并开启api功能
脚本只在Windows python3.7下测试
代码简陋出现bug概不负责
请自行安装模块和填写个人信息

# -*- coding: utf-8 -*-
import requests
import time
import hashlib
import json
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

my_sender='[email protected]' # 发件人邮箱账号
my_pass = '11111' # 发件人邮箱密码(当时申请smtp给的口令)
my_user='[email protected]' # 收件人邮箱账号,我这边发送给自己
url = 'http://1.1.1.1:111' #面板地址
api_sk = '1111111111LCW2zXTB' #(在面板设置页面 - API 接口中获取)
cpu_up = '80' #设置cpu占用提醒值根据vps配置填写
mem_up = '900' #设置cpu占用提醒值根据vps配置填写

def getmd5(s):
return hashlib.md5(s.encode('utf-8')).hexdigest()
#smtp发信
def mail(content):
msg=MIMEText(content,'html','utf-8')
msg['From']=formataddr(["系统自动发送",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["收件人昵称",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']="bt面板系统占用提醒" # 邮件的主题,也可以说是标题

server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit()# 关闭连接

cookies = {
'request_token': getmd5(str(int(time.time())) + getmd5(api_sk)),
'request_time': int(time.time())
}
url1=url + '/system?action=GetNetWork'

getnetwork = requests.post(url=url1, data=cookies)
get_work = json.loads(getnetwork.text)
cpu = get_work['cpu'][0] #获取cpu占用
mem = get_work['mem']['memRealUsed'] #获取内存占用

#判断cpu占用
if str(cpu) > cpu_up:
ret=mail('<p>' + 'cpu占用大于设定值' + '</p>' + '<p>' + '当前占用:' + str(cpu) + '<p>')
print('cpu占用大于设定值')
else:
pass
#判断内存占用
if str(mem) > mem_up:
ret=mail('<p>' + 'cpu占用大于设定值' + '</p>' + '<p>' + '当前占用:' + str(mem) + '<p>')
print('内存占用大于设定值')
else:
pass

 

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:憶の年
链接:https://www.529i.com/archives/739.html
来源:https://www.529i.com/

# -*- coding: utf-8 -*-
import requests
import time
import hashlib
import json
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

my_sender='[email protected]'    # 发件人邮箱账号
my_pass = '11111'  # 发件人邮箱密码(当时申请smtp给的口令)
my_user='[email protected]'      # 收件人邮箱账号,我这边发送给自己
url = 'http://1.1.1.1:111'       #面板地址
api_sk = '1111111111LCW2zXTB' #(在面板设置页面 - API 接口中获取)
cpu_up = '80'      #设置cpu占用提醒值根据vps配置填写(整数)
mem_up = '900'      #设置cpu占用提醒值根据vps配置填写(整数)

def getmd5(s):
    return hashlib.md5(s.encode('utf-8')).hexdigest()
#smtp发信
def mail(content):
    msg=MIMEText(content,'html','utf-8')
    msg['From']=formataddr(["系统自动发送",my_sender])  # 括号里的对应发件人邮箱昵称、发件人邮箱账号
    msg['To']=formataddr(["收件人昵称",my_user])              # 括号里的对应收件人邮箱昵称、收件人邮箱账号
    msg['Subject']="bt面板系统提醒"                # 邮件的主题,也可以说是标题

    server=smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是465
    server.login(my_sender, my_pass)  # 括号中对应的是发件人邮箱账号、邮箱密码
    server.sendmail(my_sender,[my_user,],msg.as_string())  # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
    server.quit()# 关闭连接
    return print("完成发信")
cookies = {
    'request_token': getmd5(str(int(time.time())) + getmd5(api_sk)),
    'request_time': int(time.time())
}
#获取cpu内存信息
url1=url + '/system?action=GetNetWork'
getnetwork = requests.post(url=url1, data=cookies)
get_work = json.loads(getnetwork.text)
cpu = get_work['cpu'][0]    #获取cpu占用
mem = get_work['mem']['memRealUsed']  #获取内存占用

#判断cpu占用
if str(cpu) > cpu_up:
    print('cpu占用大于设定值')
    ret=mail('<p>' + 'cpu占用大于设定值' + '</p>' + '<p>' + '当前占用:' + str(cpu) + '<p>')

#判断内存占用
if str(mem) > mem_up:
    print('内存占用大于设定值')
    ret=mail('<p>' + 'cpu占用大于设定值' + '</p>' + '<p>' + '当前占用:' + str(mem) + '<p>')

#获取版本更新
url2 = url + '/ajax?action=UpdatePanel'
UpdatePanel = requests.post(url=url2, data=cookies)
panel = json.loads(UpdatePanel.text)
status = panel['status']
#判断版本是否更新
if status == True:
    print ('有更新')
    version = panel['version']
    updateMsg = panel['updateMsg']
    ret=mail('<p>' + '版本号:' + (version) + '</p>' + '<p>' + '更新内容:' + '<br>' + (updateMsg) + '</p>')

 

原创文章,作者:admin,如若转载,请注明出处:https://www.huiyingwu.com/3211/

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注