Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 代码发布 › 「代码发布」又拍云&老薛主机(CPanel)流量监控

「代码发布」又拍云&老薛主机(CPanel)流量监控

Eswlnk的头像
Eswlnk
2022-08-13 9:02:10
「代码发布」又拍云&老薛主机(CPanel)流量监控-Eswlnk Blog
智能摘要 AI
本文介绍了作者针对服务器流量监控的需求所编写的脚本。为了应对频繁遭受攻击导致流量异常的情况,作者分别针对又拍云和老薛主机设计了不同的监控机制。对于又拍云,设定当天流量达到1GB即触发预警;而对于老薛主机,则通过比较流量使用百分比与当月时间进度来判断是否超标。两者的共同点是通过短信接口实现及时提醒,并且在检测到超标时会发送邮件通知。代码部分详细展示了如何通过API获取流量数据并进行处理。

前言

最近老被打,恶心死了;又没钱搞防护,就写个脚本预警一下。。。

又拍云:计算当天流量达到1GB就预警(这个值还不确定,随便写的,要根据实际情况限定);

老薛主机:判断流量使用百分比,是否大于当月时间进度(今天日期/当月总天数);

使用短信接口提醒更及时。

代码

<?php
// 又拍云监控
header("content-type:application/json");
require "../include/functions.php";
// https://api.upyun.com/doc#/api/operation/oauth/POST%20%2Foauth%2Ftokens
$token = "*****";
$GB = getUsed();
if($GB >= 1 && !file_exists('temp/upyun.log')){
    file_put_contents('temp/upyun.log', $GB);
    
    $msg_arr = array(
        'task_name' => '又拍云流量监控',
        'status' => "当前流量使用量已达到警戒值:{$GB}GB"
    );
    //发送邮件
    send_email('*****@qq.com', $msg_arr);
}else{
    echo $GB;
}
// print_r($body);

function getUsed(){
    global $token;
    $start = date('Y-m-d') . "T00:00:00";
    $end = date('Y-m-d') . "T23:59:59";
    $http = new EasyHttp();
    $response = $http->request("https://api.upyun.com/v2/statistics?start_time={$start}&end_time={$end}", array(
        'method' => 'GET',        //	GET/POST
        'timeout' => 10,            //	超时的秒数
        'redirection' => 5,        //	最大重定向次数
        'httpversion' => '1.1',    //	1.0/1.1
        'user-agent' => null,
        'blocking' => true,        //	是否阻塞
        'headers' => array(
            "Authorization" => "Bearer {$token}",
            ),    //	header信息
        'cookies' => null,    //	关联数组形式的cookie信息
        // 'cookies' => $cookies,
        'body' => null,
        'compress' => false,    //	是否压缩
        'decompress' => true,    //	是否自动解压缩结果
        'sslverify' => true,
        'stream' => false,
        'filename' => null        //	如果stream = true,则必须设定一个临时文件名
    ));
    // print_r($response);
    // echo $response['body'];
    $body = json_decode($response['body'], true);
    $data = $body['data'];
    $bytes = 0;
    foreach ($data as $value) {
        // code...
        $bytes += $value['bytes'];
    }
    
    $GB = $bytes / pow(1024, 3);
    return $GB;
}
$lx = new LXHOST('host', 'username', 'password');
if($lx->login())
$lx->getUsage();

class LXHOST{
    private $host;
    private $uname;
    private $upass;
    
    private $security_token;
    private $cpsession;
    
    function __construct($host, $uname, $upass){
        $this->host = $host;
        $this->uname = $uname;
        $this->upass = $upass;
    }
    
    function login(){
        $http = new EasyHttp();
        $login = $http->request("https://{$this->host}/login/?login_only=1", array(
            'method' => 'POST',        //	GET/POST
            'timeout' => 10,            //	超时的秒数
            'redirection' => 5,        //	最大重定向次数
            'httpversion' => '1.1',    //	1.0/1.1
            'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56',
            'blocking' => true,        //	是否阻塞
            'headers' => array(
                "referer" => "https://{$this->host}/logout/?locale=zh",
                ),    //	header信息
            'cookies' => null,    //	关联数组形式的cookie信息
            // 'cookies' => $cookies,
            'body' => "user={$this->uname}&pass={$this->upass}",
            'compress' => false,    //	是否压缩
            'decompress' => true,    //	是否自动解压缩结果
            'sslverify' => false,
            'stream' => false,
            'filename' => null        //	如果stream = true,则必须设定一个临时文件名
        ));
        // print_r($login);
        $body = json_decode($login['body'], true);
        if($body['status'] == 1)
        {
            $this->security_token = $body['security_token'];
            $this->cpsession = $login['cookies'][1]->value;
            return true;
        }else{
            return false;
        }
    }
    function getUsage(){
        $http = new EasyHttp();
        $usage = $http->request("https://{$this->host}{$this->security_token}/execute/ResourceUsage/get_usages", array(
            'method' => 'POST',        //	GET/POST
            'timeout' => 10,            //	超时的秒数
            'redirection' => 5,        //	最大重定向次数
            'httpversion' => '1.1',    //	1.0/1.1
            'user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56',
            'blocking' => true,        //	是否阻塞
            'headers' => array(
                "referer" => "https://{$this->host}/logout/?locale=zh",
                "X-Requested-With" => "https://{$this->host}/",
                "cookie" => "timezone=Asia/Shanghai; cpsession={$this->cpsession}"
                ),    //	header信息
            'cookies' => null,    //	关联数组形式的cookie信息
            // 'cookies' => $cookies,
            'body' => null,
            'compress' => false,    //	是否压缩
            'decompress' => true,    //	是否自动解压缩结果
            'sslverify' => false,
            'stream' => false,
            'filename' => null        //	如果stream = true,则必须设定一个临时文件名
        ));
        // print_r($usage);
        $body = json_decode($usage['body'], true);
        if($body['status'] == 1)
        {
            $data = $body['data'];
            $bandwidth = $data[2];
            $GB = $bandwidth['usage'] / pow(1024, 3);
            if($bandwidth['usage'] / $bandwidth['maximum'] >= date('d') / cal_days_in_month(CAL_GREGORIAN, date('m'), date('Y')) && !file_exists("temp/lxHost_{$this->host}.log"))
            {
                // 超标
                file_put_contents("temp/lxHost_{$this->host}.log", $GB);
                $msg_arr = array(
                    'task_name' => '老薛主机流量监控',
                    'status' => "当前流量使用量已达到警戒值:{$GB}GB"
                );
                //发送邮件
                send_email('*****@qq.com', $msg_arr);
            }else{
                echo "{$GB}GB\r\n";
            }
            
            return true;
        }else{
            return false;
        }
    }
}

ESWINK , 版权所有丨如未注明 , 均为原创

原文标题:「代码发布」又拍云&老薛主机(CPanel)流量监控

Eswink原创声明
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
PHPupyun猿之力监控脚本
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「代码发布」Nginx 防火墙模块开发总结
上一篇
「代码发布」巧妙利用腾讯云函数推送微博热搜
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「日志记录」逆向必应翻译网页版API实现免费调用
  • 「代码分享」第三方平台VIP视频解析API接口
  • 「至臻原创」某系统网站登录功能监测
  • 「开发日志」在Vue3中如何为路由Query参数标注类型
  • 「其他分享」分享一个在Tun模式下可用的脚本
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

Hexo博客魔改友链页面_实现自定义提交与个性化设置
2022-04-30 15:13:56
「攻防对抗」Python系列之Frida破解某盒子hkey反爬虫算法
2022-08-11 13:47:36
网络空间测绘页面开发日志
2022-02-07 16:31:00

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 1.208 秒   |  SQL查询 51 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈