安装 vnstat
apt install vnstat
vnstat --help
这些参数分别可以 查看 每 5分 ,小时 ,小时图形,天,月,年的使用量。
支持表格,oneline,json,xml格式。
使用gpt 写一个定时脚本,需求: 超过500MB,发邮件,超过1个G关机。
#!/usr/bin/env python3
import smtplib
from email.mime.text import MIMEText
import os, re
from datetime import datetime
# 获取当前的日期
CURRENT_DAY = datetime.now().day
# 获取vnstat产生的流量数据
TOTAL_DATA=os.popen('vnstat --oneline').read()
# 提取本月至今的总流量数值和单位
VALUE, UNIT = TOTAL_DATA.split(';')[10].split()
# 根据单位转换数据值为MiB
if UNIT == "GiB":
VALUE = float(VALUE)*1024
elif UNIT == "KiB":
VALUE = float(VALUE)/1024
elif UNIT == "B":
VALUE = float(VALUE)/(1024*1024)
else:
VALUE = float(VALUE)
# 判断数据值是否超过阈值,并执行对应的命令
if VALUE > 500 * CURRENT_DAY:
# 配置Outlook邮箱服务器、账号和密码
smtp_server= 'smtp-mail.outlook.com'
smtp_port= 587
email_address= 'your-email@outlook.com'
email_password= 'your-password'
# 配置邮件内容
recipients= ['recipient-email@example.com']
message= MIMEText(f'Warning: Traffic has exceeded {500 * CURRENT_DAY} MiB. Current traffic is {VALUE} MiB.')
message['Subject']= 'Traffic Warning'
message['From']= email_address
message['To']= ', '.join(recipients)
# 创建SMTP对象,并配置Outlook邮箱服务器和端口
server= smtplib.SMTP(smtp_server, smtp_port)
# 设置STARTTLS加密
server.starttls()
# 登陆邮箱
server.login(email_address, email_password)
# 发送邮件
server.sendmail(email_address, recipients, message.as_string())
# 断开服务器链接
server.quit()
if VALUE > 1024 * CURRENT_DAY:
# 关机的命令,需要你自己配置
os.system('shutdown -h now')
测试一下:
定时任务
*/5 * * * * /path/to/python3 monitor.sh