当前位置:首页>python>Jinja2+Python:打造企业级网络自动化巡检工具(附完整代码)

Jinja2+Python:打造企业级网络自动化巡检工具(附完整代码)

  • 2026-02-01 00:16:04
Jinja2+Python:打造企业级网络自动化巡检工具(附完整代码)

🔺点击上方卡片关注YESLAB实验室
获取新网工学习资源
学习笔记 | 实验手册 考试咨询 | 就业辅导

场景还原:凌晨3点,运维群炸了——"192.168.10.x网段大面积丢包!"你打开Xshell,手动ping了半小时,发现是.10.87那台核心交换机挂了...如果有个工具能自动巡检254台设备,3秒出结果呢?


投稿人✍️:热心市民胡同学

编辑排版:铲屎官小五🐱

一、为什么会想设计这个工具?

实际应用场景举例

场景1:日常巡检

每天早上9点自动检查:├── 核心交换机 (192.168.1.1-10)├── 服务器区 (192.168.10.1-100)└── 办公区 (192.168.20.1-254)

场景2:故障排查

网络异常时快速定位:某网段突然异常 → 3秒扫描254个IP → 精准定位故障设备

场景3:变更验证

网络割接后验证:新增VLAN后,一键验证所有设备可达性

胡同学这次的方案

Jinja2 (规则描述) Python (执行引擎) + Ping3 (探测能力)           ↓   一个文件搞定所有事!

三大核心能力

  • 动态生成IP - 用规则代替硬编码,3行顶254行
  • 自动记录日志 - 带时间戳,可追溯,支持审计
  • 单文件运行 - 复制粘贴即可用,零依赖配置
  • 高度可扩展 - 改规则不改代码,非技术人员也能用

三、环境准备(2分钟搞定)

Step 1: 安装依赖

pip install ping3 jinja2

Step 2: 权限检查

重要提示:ping需要发送ICMP包,需要特殊权限

# Linux/Mac 用户sudo python3 your_script.py# 或者给Python解释器加权限(一次性)sudo setcap cap_net_raw+ep $(readlink -f $(which python3))# Windows 用户# 以管理员身份运行CMD/PowerShell即可

Step 3: 验证安装

from ping3 import pingprint(ping('127.0.0.1'))  # 应该返回一个小数(延迟时间)

四、完整代码(可直接运行)

核心代码 - 一个文件搞定

#!/usr/bin/env python3# -*- coding: utf-8 -*-"""网络设备批量Ping探测工具Author: 热心市民小胡同学Version: 2.0"""from ping3 import pingfrom datetime import datetimefrom jinja2 import Templatefrom pathlib import Pathimport sys# ===== 配置区 =====IP_JINJA_LIST = r"""{% for i in range(1, 10) %}192.168.10.{{ i }}{% endfor %}"""LOG_FILE = "ping_log.txt"TIMEOUT = 1# 超时时间(秒)# ===== 核心函数 =====defpull_ip_list(template_str: str) -> list:"""    从Jinja2模板生成IP列表    Args:        template_str: Jinja2模板字符串    Returns:        IP地址列表 ['192.168.10.1', '192.168.10.2', ...]    """try:        tpl = Template(template_str)        rendered = tpl.render()# 过滤空行和注释        ip_list = [            line.split('#')[0].strip() for line in rendered.splitlines() if line.strip() andnot line.strip().startswith('#')        ]return ip_listexcept Exception as e:        print(f"❌ 模板解析失败: {e}")        sys.exit(1)defdo_ping(ip: str, log_file: str = LOG_FILE, timeout: int = TIMEOUT) -> None:"""    执行ping探测并记录日志    Args:        ip: 目标IP地址        log_file: 日志文件路径        timeout: 超时时间    """try:        response = ping(ip, timeout=timeout)        now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")if response isNone:# 网络不可达            status = "❌ 不可达"            print(f"{status:12s} | {ip:15s}")            log_msg = f"{now} | {ip:15s} | 不可达\n"else:# 网络可达,显示RTT            rtt_ms = response * 1000            status = f"✅ 可达"            print(f"{status:12s} | {ip:15s} | RTT: {rtt_ms:6.2f}ms")            log_msg = f"{now} | {ip:15s} | 可达 | RTT: {rtt_ms:.2f}ms\n"# 追加写入日志        Path(log_file).parent.mkdir(exist_ok=True)with open(log_file, 'a', encoding='utf-8'as f:            f.write(log_msg)except PermissionError:        print("❌ 权限不足!请使用 sudo 运行或以管理员身份运行")        sys.exit(1)except Exception as e:        print(f"❌ {ip:15s} | 探测异常: {e}")defprint_banner():"""打印工具启动横幅"""    banner = """╔════════════════════════════════════════════╗║ 网络设备批量探测工具 版本 2.0                  ║   ║ 作者:热心市民小胡同学                         ║╚════════════════════════════════════════════╝    """    print(banner)# ===== 主程序 =====if __name__ == "__main__":    print_banner()# 1. 生成IP列表    ip_list = pull_ip_list(IP_JINJA_LIST)    print(f"📋 本次共需探测 {len(ip_list)} 个IP地址\n")    print(f"{'状态':12s} | {'IP地址':15s} | 详情")    print("-" * 50)# 2. 在日志文件中插入分隔符with open(LOG_FILE, 'a', encoding='utf-8'as f:        f.write(f"\n{'='*60}\n")        f.write(f"探测时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")        f.write(f"{'='*60}\n")# 3. 批量pingfor ip in ip_list:        do_ping(ip)# 4. 输出统计信息    print("-" * 50)    print(f"✅ 探测完成!日志已保存至: {LOG_FILE}")

📚 五、代码详解(逐行分析)

模块1:IP规则定义层

IP_JINJA_LIST = r"""{% for i in range(1, 10) %}192.168.10.{{ i }}{% endfor %}"""

知识点解析

语法
作用
示例
r"""..."""
原始字符串,避免转义
r"\n"
 就是两个字符
{% for %}
Jinja2循环语法
类似Python的for循环
{{ variable }}
变量插值
把变量值插入到文本中

实际效果

192.168.10.1192.168.10.2...192.168.10.9

模块2:IP列表生成器

defpull_ip_list(template_str: str) -> list:    tpl = Template(template_str)      # 创建模板对象    rendered = tpl.render()            # 渲染模板    ip_list = [                        # 解析为列表        line.split('#')[0].strip()     # 支持行内注释for line in rendered.splitlines() if line.strip() andnot line.strip().startswith('#')    ]return ip_list

处理流程

Jinja2模板 → 渲染成文本 → 按行分割 → 过滤空行/注释 → 返回列表

支持的高级用法

# ✅ 支持行内注释192.168.10.1# 核心交换机192.168.10.2# 备份交换机# ✅ 支持整行注释# 这是一行注释192.168.10.3

模块3:Ping探测引擎

defdo_ping(ip: str, log_file: str = LOG_FILE, timeout: int = TIMEOUT):    response = ping(ip, timeout=timeout)if response isNone:# 返回None = 网络不可达        status = "❌ 不可达"else:# 返回float = RTT延迟(秒)        rtt_ms = response * 1000# 转换为毫秒        status = "✅ 可达"

Ping3返回值说明

返回值
含义
示例
None
目标不可达
设备离线/防火墙阻止
False
超时
网络延迟过高
float
RTT时间(秒)
0.003
 = 3ms

🎬 六、运行效果展示

控制台输出

╔════════════════════════════════════════════╗║ 网络设备批量探测工具 版本 2.0                  ║║ 作者:热心市民小胡同学                        ║╚════════════════════════════════════════════╝📋 本次共需探测 9 个IP地址状态         | IP地址          | 详情--------------------------------------------------✅ 可达       | 192.168.10.1    | RTT:   2.34ms❌ 不可达     | 192.168.10.2    |✅ 可达       | 192.168.10.3    | RTT:   1.87ms✅ 可达       | 192.168.10.4    | RTT:  15.62ms❌ 不可达     | 192.168.10.5    |✅ 可达       | 192.168.10.6    | RTT:   3.21ms✅ 可达       | 192.168.10.7    | RTT:   2.98ms✅ 可达       | 192.168.10.8    | RTT:   4.12ms✅ 可达       | 192.168.10.9    | RTT:   2.76ms--------------------------------------------------✅ 探测完成!日志已保存至: ping_log.txt

日志文件示例

============================================================探测时间: 2026-01-10 15:30:25============================================================2026-01-10 15:30:25 | 192.168.10.1    | 可达 | RTT: 2.34ms2026-01-10 15:30:26 | 192.168.10.2    | 不可达2026-01-10 15:30:27 | 192.168.10.3    | 可达 | RTT: 1.87ms...

七、实战应用场景

场景1:多网段巡检

IP_JINJA_LIST = r"""{% for subnet in [10, 20, 30] %}  {% for host in range(1, 255) %}192.168.{{ subnet }}.{{ host }}  {% endfor %}{% endfor %}"""

效果:自动生成3个C段共762个IP


场景2:特定设备监控

IP_JINJA_LIST = r"""{% set devices = {  'core-sw-1': '192.168.1.1',  'core-sw-2': '192.168.1.2',  'firewall': '192.168.1.254',  'db-server': '192.168.10.100',  'web-server-1': '192.168.10.101',  'web-server-2': '192.168.10.102'} %}{% for name, ip in devices.items() %}{{ ip }}  # {{ name }}{% endfor %}"""

效果:只监控关键设备,带设备名注释


场景3:跳跃式IP段

IP_JINJA_LIST = r"""{% for i in range(1, 21) %}192.168.10.{{ i * 10 }}  {# 只ping .10, .20, .30...200 #}{% endfor %}"""

效果192.168.10.10192.168.10.20, ... 192.168.10.200


场景4:排除特定IP

IP_JINJA_LIST = r"""{% for i in range(1, 255) %}  {% if i not in [1, 254] %}  {# 排除网关和广播地址 #}192.168.10.{{ i }}  {% endif %}{% endfor %}"""

八、进阶功能扩展

扩展1:并发Ping(速度提升10倍)

from concurrent.futures import ThreadPoolExecutordefbatch_ping_concurrent(ip_list, max_workers=20):"""并发执行ping,大幅提升速度"""    print(f"🚀 使用 {max_workers} 个线程并发探测...")with ThreadPoolExecutor(max_workers=max_workers) as executor:        executor.map(do_ping, ip_list)

使用方式

# 替换原来的for循环# for ip in ip_list:#     do_ping(ip)# 改为并发执行batch_ping_concurrent(ip_list, max_workers=20)

性能对比

  • 串行:254个IP ≈ 254秒
  • 并发:254个IP ≈ 20秒

扩展2:生成统计报告

defgenerate_report(log_file: str):"""分析日志并生成统计报告"""with open(log_file, 'r', encoding='utf-8'as f:        lines = f.readlines()    total = 0    reachable = 0    unreachable = 0for line in lines:if'可达'in line and'不可达'notin line:            reachable += 1            total += 1elif'不可达'in line:            unreachable += 1            total += 1if total > 0:        rate = (reachable / total) * 100        print(f"\n📊 统计报告")        print(f"{'='*40}")        print(f"总探测数: {total}")        print(f"✅ 可达: {reachable}")        print(f"❌ 不可达: {unreachable}")        print(f"📈 可达率: {rate:.2f}%")

🔐 安全建议

  1. 敏感信息加密存储

    # 使用环境变量import osWEBHOOK_URL = os.getenv('WECHAT_WEBHOOK')
  2. 日志轮转

    from logging.handlers import RotatingFileHandler# 单个日志文件最大10MB,保留5个备份
  3. 访问控制

    chmod 700 monitor.pychown monitor:monitor monitor.py

胡同学也是跟着我们的网络自动化课程边学习边动手

有正反馈后也特别有动力,大家也可以跟着动手练习。

🤔 思考题

  1. 为什么用Jinja2而不是直接写列表?

    • 规则驱动,易于维护
    • 支持复杂逻辑(条件、循环)
    • 配置与代码分离
    • 非技术人员也能修改规则
  2. 如何实现"ping不通自动重试3次"?

    defdo_ping_with_retry(ip, max_retries=3):for i in range(max_retries):        response = ping(ip)if response isnotNone:returnTruereturnFalse
  3. 大规模设备监控(1000+)如何优化?

    • 使用异步IO(asyncio)
    • 分布式部署(多机并行)
    • 结果缓存(Redis)
    • 智能采样(根据历史稳定性调整频率)

核心思想

用"规则"代替"硬编码"用"自动化"代替"手工操作"用"工程化思维"解决运维问题


再次感谢小胡同学的分享📒

这个工具虽小,但也是小胡同学自己通过思考和动手迈出的一小步

    希望这个工具也能成为你自动化之路的第一步

    点赞”“在看”,让更多人看到

    尊重原创,转载请联系;转载需标明作者及出处(YESLAB新网工公众号);禁止擅自篡改、商用或洗稿;技术交流欢迎分享,侵权必究。

    YESLA新网工

    做有灵魂的技术分享

    新网工创新知识传播社区

    关注我们,一起深耕技术,洞见未来

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-02-08 15:25:20 HTTP/2.0 GET : https://f.mffb.com.cn/a/463414.html
    2. 运行时间 : 0.093065s [ 吞吐率:10.75req/s ] 内存消耗:4,794.19kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=71f5483440f6d5b3301e31843b98c961
    1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
    2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
    3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
    4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
    5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
    6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
    7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
    8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
    9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
    10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
    11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
    12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
    13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
    14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
    15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
    16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
    17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
    18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
    19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
    20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
    21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
    22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
    23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
    24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
    25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
    26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
    27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
    28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
    29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
    30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
    31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
    32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
    33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
    34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
    35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
    36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
    37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
    38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
    39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
    40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
    41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
    42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
    43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
    44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
    45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
    46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
    47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
    48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
    49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
    50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
    51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
    52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
    53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
    54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
    55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
    56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
    57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
    58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
    59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
    60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
    61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
    62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
    63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
    64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
    65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
    66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
    67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
    68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
    69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
    70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
    71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
    72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
    73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
    74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
    75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
    76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
    77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
    78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
    79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
    80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
    81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
    82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
    83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
    84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
    85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
    86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
    87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
    88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
    89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
    90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
    91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
    92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
    93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
    94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
    95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
    96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
    97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
    98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
    99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
    100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
    101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
    102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
    103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
    104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
    105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
    106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
    107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
    108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
    109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
    110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
    111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
    112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
    113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
    114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
    115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
    116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
    117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
    118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
    119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
    120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
    121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
    122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
    123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
    124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
    125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
    126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
    127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
    128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
    129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
    130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
    131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
    132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
    133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
    134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
    135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
    136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
    137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
    138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
    139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
    140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
    1. CONNECT:[ UseTime:0.000497s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000677s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000352s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000842s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000465s ]
    6. SELECT * FROM `set` [ RunTime:0.000185s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000560s ]
    8. SELECT * FROM `article` WHERE `id` = 463414 LIMIT 1 [ RunTime:0.000632s ]
    9. UPDATE `article` SET `lasttime` = 1770535520 WHERE `id` = 463414 [ RunTime:0.002314s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.002973s ]
    11. SELECT * FROM `article` WHERE `id` < 463414 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001169s ]
    12. SELECT * FROM `article` WHERE `id` > 463414 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001104s ]
    13. SELECT * FROM `article` WHERE `id` < 463414 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002126s ]
    14. SELECT * FROM `article` WHERE `id` < 463414 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005915s ]
    15. SELECT * FROM `article` WHERE `id` < 463414 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.006748s ]
    0.094688s