Skip to main content

OKHK 👀

Thinking ❤️
  1. Bash脚本 - Nginx 日志分析工具:统计网站的总数据流量、请求数、和各个IP的具体数据

    https://www.nodeseek.com/post-291808-1

    #!/bin/bash
    
    LOG_DIR="/opt/1panel/apps/openresty/openresty/www/sites"
    
    # 人类可读的流量格式化函数
    format_size() {
        local size=$(printf "%.0f" "$1")
        if (( size < 1024 )); then
            echo "${size} B"
        elif (( size < 1048576 )); then
            echo "$(( size / 1024 )) KB"
        elif (( size < 1073741824 )); then
            echo "$(( size / 1048576 )) MB"
        else
            echo "$(( size / 1073741824 )) GB"
        fi
    }
    
    # 列出所有网站并统计汇总数据
    list_sites() {
        local total_requests=0
        local total_traffic=0
        declare -A site_requests
        declare -A site_traffic
    
        echo "📌 站点列表:"
        for site in "$LOG_DIR"/*; do
            [[ -d "$site" ]] || continue
            site_name=$(basename "$site")
            log_path="$site/log/access.log"
    
            if [[ ! -f "$log_path" ]]; then
                echo "   $site_name (无日志)"
                continue
            fi
    
            # 统计该站点请求数 & 总流量
            requests=$(wc -l < "$log_path")
            traffic=$(awk '{size=$10} size ~ /^[0-9]+$/ {sum += size} END {printf "%.0f", sum}' "$log_path")
            traffic=${traffic:-0}
    
            site_requests["$site_name"]=$requests
            site_traffic["$site_name"]=$traffic
            total_requests=$((total_requests + requests))
            total_traffic=$((total_traffic + traffic))
    
            echo "   $site_name - 请求数: $requests, 流量: $(format_size "$traffic")"
        done
    
        # 汇总数据
        echo -e "\n📊 **站点总览**"
        echo "  🌐 站点总数: ${#site_requests[@]}"
        echo "  📥 总请求数: $total_requests"
        echo "  📊 总流量: $(format_size "$total_traffic")"
    
        # 按请求数 & 流量 排序站点
        echo -e "\n📈 **Top 5 站点 (按请求数)**"
        for site in "${!site_requests[@]}"; do
            echo "${site_requests[$site]} $site"
        done | sort -nr | head -n 5 | awk '{printf "  %-15s 请求数: %s\n", $2, $1}'
    
        echo -e "\n💾 **Top 5 站点 (按流量)**"
        for site in "${!site_traffic[@]}"; do
            echo "${site_traffic[$site]} $site"
        done | sort -nr | head -n 5 | while read -r size site; do
            echo "  $site 流量: $(format_size "$size")"
        done
    }
    
    # 筛选 IP 日志
    extract_ip_logs() {
        local ip="$1"
        local output_file="$2"
        local found=0
    
        echo "📂 正在搜索与 IP $ip 相关的日志..."
        > "$output_file"  # 清空输出文件
    
        for site in "$LOG_DIR"/*; do
            [[ -d "$site" ]] || continue
            log_path="$site/log/access.log"
    
            if [[ -f "$log_path" ]]; then
                # 检测日志文件类型
                if file "$log_path" | grep -q "gzip compressed data"; then
                    zgrep -a -F "$ip" "$log_path" >> "$output_file"
                else
                    grep -a -F "$ip" "$log_path" >> "$output_file"
                fi
                found=1
            fi
        done
    
        if [[ $found -eq 1 ]]; then
            echo " 日志已保存到: $output_file"
        else
            echo " 没有找到与 $ip 相关的日志!"
        fi
    }
    
    # 解析命令行参数
    if [[ $# -eq 2 && "$1" == "-n" ]]; then
        SITE="$2"
        LOG_PATH="$LOG_DIR/$SITE/log/access.log"
    
        if [[ ! -f "$LOG_PATH" ]]; then
            echo "错误: 访问日志 $LOG_PATH 不存在!"
            exit 1
        fi
    
        echo "日志文件: $LOG_PATH"
    
        # 统计请求最多的 10 个 IP
        echo -e "\n📊 请求数最多的 IP:"
        awk '{print $1}' "$LOG_PATH" | sort | uniq -c | sort -nr | head -n 10 | awk '{printf "  %-15s 请求数: %s\n", $2, $1}'
    
        # 统计流量最多的 10 个 IP
        echo -e "\n📊 消耗带宽最多的 IP:"
        awk '{ip=$1; size=$10} size ~ /^[0-9]+$/ {traffic[ip] += size} END {for (ip in traffic) printf "%.0f %s\n", traffic[ip], ip}' "$LOG_PATH" \
            | sort -nr | head -n 10 | while read -r size ip; do
            echo "  $ip 流量: $(format_size "$size")"
        done
    
    elif [[ $# -eq 1 && "$1" == "-v" ]]; then
        list_sites
    
    elif [[ $# -eq 3 && "$1" == "-i" ]]; then
        extract_ip_logs "$2" "$3"
    
    else
        echo "用法:"
        echo "  $0 -n          # 查看指定站点的流量信息"
        echo "  $0 -v                # 列出所有站点并显示汇总数据"
        echo "  $0 -i  <文件>    # 筛选出指定 IP 的日志并保存"
        exit 1
    fi

    参数 说明 示例
    -n  查看指定站点的流量 & 请求统计 ./statics.bash -n example.com
    -v 列出所有站点的流量 & 请求数汇总 ./statics.bash -v
    -i  <文件> 筛选指定 IP 访问日志并输出到文件 ./statics.bash -i 1.1.1.1 ./sus.log


    #Script #Shell #Tool
  2. Cyclops - Kubernetes 开发工具

    https://github.com/cyclops-ui/cyclops

    Cyclops 是一个开源的 Kubernetes 开发工具,它提供了一个易于使用的 UI,使 Kubernetes 变得不那么令人生畏。

    它允许 DevOps 团队快速创建定制的 UI,供开发人员、QA 团队、产品经理等使用,而无需编写 YAML 文件。

    Cyclops 使用 Helm Chart 来创建所需的 UI,因此您可以尝试使用任何现有的 Helm Chart 或公共 Helm Chart。

    提供易于使用的 UI,简化 Kubernetes 的配置和部署
    支持高度可定制的模板系统,可以快速创建所需的 UI
    支持使用任何现有的 Helm Chart 或公共 Helm Chart

    #K8s #GitHub #Tool #DevOps link
  3. browser-mcp

    https://github.com/djyde/browser-mcp

    browser-mcp 是一个浏览器扩展和 MCP Server,允许您与正在使用的浏览器进行交互。

    获取当前浏览页面的 Markdown 内容
    向当前浏览页面添加 CSS 样式
    搜索浏览器历史记录

    #AI #Chrome #Extension #GitHub
  4. MCP 资源合集 - 中文 Awesome 仓库

    https://github.com/yzfly/Awesome-MCP-ZH

    Awesome-MCP-ZH 是一个专为中文用户打造的 MCP(模型上下文协议)资源合集

    提供 MCP 的基础介绍和使用场景
    推荐多款 MCP 客户端工具,如 Claude Desktop、Cherry Studio、5ire 等
    整理了丰富的 MCP Server 列表,涵盖浏览器自动化、代码执行、数据库交互、云平台集成等多个应用场景
    收集了大量 MCP 相关的教程、分析文章和社区资源

    #AI #GitHub GitHub - yzfly/Awesome-MCP-ZH: MCP 资源精选, MCP指南,Claude MCP,MCP Servers, MCP Clients
  5. 大陆支付宝灰度测试“Alipay+ 境外NFC支付”,开通免费获得一张万事达虚拟卡!


    大陆支付宝正在小范围测试一项名为“Alipay+ 境外NFC支付”的新功能。
    能获得什么?
    开通后会得到一张 万事达 (Mastercard) 虚拟借记卡 (卡BIN: 5354009500,新加坡发行,SGD货币)。卡号需要用NFC读卡工具获取。
    谁能开?
    仅限 大陆身份证实名 的支付宝账户。
    仅限 安卓手机 (需支持HCE,鸿蒙不行)。
    支付宝 地区需切换到海外城市。
    怎么开通?
    支付宝首页,将城市切换到 海外。
    在首页“收付款”里找到并开通 “Alipay+ 境外NFC支付”。
    (如果找不到入口,可能需要尝试 虚拟定位 + 海外 IP 辅助)。
    重要限制:
    不能 在中国内地商户使用。
    目前仅支持 余额、余额宝、花呗 作为付款方式。
    简单来说: 这是一个给大陆支付宝用户在境外(或支持Alipay+的线上场景)使用NFC支付或获取一张万事达虚拟卡的新途径,但目前还在测试阶段,有较多限制。
    更多详细信息 以及评论区成功开通的用户的手机型号 系统 支付宝版本号


    https://linux.do/t/topic/536268
  6. 一觉醒来发生了什么 04月06日

    2025年4月6日
    🌍资讯快读
    1、中国援缅第三批救灾物资抵达仰光
    https://www.jiemian.com/article/12569445.html
    2、不满高校“反犹主义”,特朗普政府考虑再对两校“断供”
    https://www.jiemian.com/article/12569250.html
    3、多地高规格推进足球名城打造,“点燃百姓对足球的热爱”
    https://www.thepaper.cn/newsDetail_forward_30578919
    4、山西平遥山火扑救持续,过火面积正在统计中
    https://www.thepaper.cn/newsDetail_forward_30579644
    5、隐匿在“举牌”背后的色情暗流
    https://www.thepaper.cn/newsDetail_forward_30577649

    👬即刻镇小报
    1、一个精妙的比喻:小红书=杂志,抖音=电视,微博=报纸
    https://m.okjike.com/originalPosts/67efa1ae070109da49d5428d
    2、前段时间,我参加了一个活动,好几个小组都在做同一个任务
    https://m.okjike.com/originalPosts/67eeb1201ab958e77ecf0d06
    3、训一个AI分身对高净值人士来说,还是有价值的
    https://m.okjike.com/originalPosts/6620956a164d89e6014e77e4
    4、时间真快。四年前的今天,和 @Lightory 一起发布了 flomo 的第一个网页版
    https://m.okjike.com/originalPosts/662089b8de5f2873486a3ff8

    今日即刻镇小报内容来自 @橘子汽水配柠檬水 @鲁彼特 @鲁彼特 @少楠Plidezus ,感谢以上即友的创作与分享。
  7. Meta 发布 Llama 4,新一代旗舰 AI 模型

    Meta在周六发布了其 Llama 家族的全新人工智能模型系列 Llama 4。该系列总共有四个新模型:Llama 4 Scout、Llama 4 Maverick 和 Llama 4 Behemoth。Meta公司表示,所有这些模型都经过了 “大量未标注的文本、图像和视频数据” 的训练,以使这些模型具备 “广泛的视觉理解能力”。Scout 和 Maverick 模型在Llama.com网站以及 Meta 的合作伙伴(包括人工智能开发平台 Hugging Face)处均可公开获取,而 Behemoth 模型仍在训练中。该公司表示,其人工智能助手 Meta AI(应用于 WhatsApp、Messenger 和 IG 等应用)已在四十个国家更新为使用 Llama 4 模型。目前多模态功能仅在美国以英语提供。

    —— Techcrunch
  8. #Bing_Wallpaper

    “日落时分,伦敦的壮丽城市景观令人心生敬畏,以耸立在天际线上的碎片大厦(The Shard)为焦点。这座玻璃覆面的金字塔状建筑反射出黄金时刻的温暖色调,与充满戏剧性的天空中浓烈的橙色、紫色和粉色完美融合。柔和的阳光笼罩着城市,投射出长长的阴影,并突显出周围现代与历史建筑的建筑细节。大气的透视效果赋予城市深度,远处的高楼渐渐消失在朦胧的地平线中。下方,泰晤士河波光粼粼,两岸环绕着错综复杂的城市纹理和忙碌的街道。这一场景如电影般充满情感,是现代感与永恒魅力的结合,令人感受到宏伟与宁静的气息。画面超现实、细节极其丰富,色彩鲜明且对比柔和。”
OKHK