当前位置:首页>python>网工Python自动化入门:4个开箱即用的脚本,搞定90%的重复运维工作

网工Python自动化入门:4个开箱即用的脚本,搞定90%的重复运维工作

  • 2026-03-27 04:21:14
网工Python自动化入门:4个开箱即用的脚本,搞定90%的重复运维工作
以下是的作为网工的各位经常遇到的场景:

- 每天手动登录几十台设备备份配置,遇上节假日割接,熬夜备份到凌晨;

- 月底/季度巡检,一台台登录设备查端口状态、错包统计、CPU/内存负载,整理报表要花一整天;

- 新开局、网络整改,几十台设备要下发相同的基础配置,一台台敲命令不仅效率低,还容易敲错出故障;

- 子网划分、地址台账管理,手动计算、手动统计,不仅慢还容易出错。

而Python自动化,就是解决这些痛点的最佳方案。很多网工觉得“编程太难,我学不会”,但实际上,不需要精通Python语法,只要会改几个基础参数,就能用现成的脚本搞定90%的重复运维工作。

本文给大家带来4个开箱即用、零编程基础也能直接用的Python脚本,覆盖网工最高频的4类运维场景,适配华为/华三/思科主流厂商设备,代码带完整注释,改完IP、账号密码就能直接运行。

一、零基础前置准备:5分钟完成环境搭建

不用复杂的环境配置,3步就能搭好网工Python自动化基础环境,Windows/Linux/macOS全平台适配:

1. 安装Python环境

直接去Python官网下载3.8及以上版本(https://www.python.org/),安装时一定要勾选「Add Python to PATH」,一路默认安装即可。

安装完成后,打开CMD/终端,输入 python -V ,能输出版本号即安装成功。

2. 安装网工必备Python库

打开CMD/终端,输入以下pip命令,一键安装所有依赖库:

# 核心网络设备连接库,适配华为/华三/思科等绝大多数厂商pip install netmiko# 用于生成Excel巡检报告、配置台账pip install openpyxl# 用于子网划分、IP地址计算pip install ipaddress# 用于IP存活扫描、网络探测pip install ping3

3. 设备前置配置

所有需要纳管的网络设备,需要提前开启SSH服务,配置管理员账号,确保运维电脑能ping通设备管理IP,且放通TCP 22端口(SSH默认端口)。

华为设备基础SSH配置参考:

[SW] ssh server enable[SW] user-interface vty 0 4[SW-ui-vty0-4] authentication-mode aaa[SW-ui-vty0-4] protocol inbound ssh[SW-ui-vty0-4] quit[SW] aaa[SW-aaa] local-user admin password cipher Admin@123[SW-aaa] local-user admin service-type ssh[SW-aaa] local-user admin privilege level 15[SW-aaa] quit

二、4个开箱即用的Python脚本(全场景覆盖)

所有脚本均经过现网验证,适配华为/华三/思科设备,带完整注释,零基础用户仅需修改「用户自定义参数」部分,即可直接运行。

脚本1:网络设备配置批量自动备份(网工第一刚需)

【适用场景】

日常运维配置备份、割接前批量备份、月度/年度配置归档,解决手动登录备份效率低、漏备份、归档混乱的问题,支持按设备名称、日期自动归档,生成备份台账Excel。

【完整可运行代码】

from netmiko import ConnectHandlerfrom openpyxl import Workbookimport datetimeimport os# ====================== 用户自定义参数(仅需修改这里)======================# 设备清单,按格式添加,支持华为(huawei)、华三(h3c)、思科(cisco_ios)device_list = [    {        "device_type""huawei",        "ip""192.168.99.1",        "username""admin",        "password""Admin@123",        "device_name""核心交换机SW1"    },    {        "device_type""huawei",        "ip""192.168.99.2",        "username""admin",        "password""Admin@123",        "device_name""核心交换机SW2"    },    {        "device_type""cisco_ios",        "ip""192.168.99.3",        "username""admin",        "password""Admin@123",        "device_name""出口路由器R1"    }]# 备份命令,不同厂商修改为对应查看配置的命令backup_command = {    "huawei""display current-configuration",    "h3c""display current-configuration",    "cisco_ios""show running-config"}# 备份文件保存路径,Windows用r"C:\网工备份\配置备份",Linux/Mac用"/home/网工备份/配置备份"backup_path = r"./网络设备配置备份"# ==========================================================================# 创建备份文件夹,按当前日期命名today = datetime.datetime.now().strftime("%Y-%m-%d")save_path = os.path.join(backup_path, today)if not os.path.exists(save_path):    os.makedirs(save_path)# 创建Excel备份台账wb = Workbook()ws = wb.activews.title = "备份台账"ws.append(["设备名称""管理IP""设备厂商""备份状态""备份文件路径""备份时间"])# 批量登录设备备份配置for device in device_list:    device_name = device["device_name"]    device_ip = device["ip"]    print(f"正在连接设备:{device_name} ({device_ip})")    try:        # 连接设备        conn = ConnectHandler(**device)        # 获取设备配置        command = backup_command[device["device_type"]]        config = conn.send_command(command)        # 保存配置文件        file_name = f"{device_name}_{device_ip}_{today}.cfg"        file_full_path = os.path.join(save_path, file_name)        with open(file_full_path, "w", encoding="utf-8"as f:            f.write(config)        # 记录台账        backup_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")        ws.append([device_name, device_ip, device["device_type"], "备份成功", file_full_path, backup_time])        print(f" {device_name} 备份成功!")        conn.disconnect()    except Exception as e:        # 备份失败记录        backup_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")        ws.append([device_name, device_ip, device["device_type"], f"备份失败:{str(e)}""", backup_time])        print(f" {device_name} 备份失败!原因:{str(e)}")# 保存备份台账excel_path = os.path.join(save_path, f"设备配置备份台账_{today}.xlsx")wb.save(excel_path)print(f"\n 批量备份任务完成!台账已保存至:{excel_path}")

【使用方法】

1. 在 device_list 里按格式添加你的设备信息,注意 device_type 要和厂商匹配;

2. 修改 backup_path 为你想要保存备份文件的路径;

3. 保存代码为 device_backup.py ,双击运行,或在CMD中执行 python device_backup.py ;

4. 运行完成后,会自动生成按日期命名的文件夹,里面包含所有设备的配置文件,以及Excel备份台账。

【避坑指南】

1. 设备SSH端口不是默认22的话,在device_list里添加 "port": 自定义端口号 即可;

2. 配置文件乱码的话,把 encoding="utf-8" 改为 encoding="gbk" ;

3. 连接超时的话,在device_list里添加 "timeout": 30 ,延长超时时间。

脚本2:全网设备端口状态自动巡检脚本(告别手动统计)

【适用场景】

月度/季度网络巡检、故障后全网端口健康度检查,自动批量登录设备,采集所有端口的up/down状态、收发光功率、错包/CRC错误统计,自动生成带异常告警的Excel巡检报告,异常端口自动标红,不用再一台台设备敲命令、复制粘贴。

【完整可运行代码】

from netmiko import ConnectHandlerfrom openpyxl import Workbookfrom openpyxl.styles import PatternFillimport datetime# ====================== 用户自定义参数(仅需修改这里)======================device_list = [    {        "device_type""huawei",        "ip""192.168.99.1",        "username""admin",        "password""Admin@123",        "device_name""核心交换机SW1"    },    {        "device_type""huawei",        "ip""192.168.99.2",        "username""admin",        "password""Admin@123",        "device_name""汇聚交换机SW3"    }]# 不同厂商的端口巡检命令check_command = {    "huawei""display interface brief",    "h3c""display interface brief",    "cisco_ios""show ip interface brief"}# 异常标红样式red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")# ==========================================================================# 创建Excel巡检报告wb = Workbook()summary_ws = wb.activesummary_ws.title = "巡检汇总"summary_ws.append(["设备名称""管理IP""总端口数""UP端口数""DOWN端口数""异常错包端口数""巡检状态""巡检时间"])# 批量巡检设备for device in device_list:    device_name = device["device_name"]    device_ip = device["ip"]    print(f"正在巡检设备:{device_name} ({device_ip})")    # 创建设备单独的巡检工作表    device_ws = wb.create_sheet(title=device_name)    device_ws.append(["端口名称""物理状态""协议状态""入方向错包数""出方向错包数""CRC错误数"])    try:        # 连接设备        conn = ConnectHandler(**device)        # 执行巡检命令        output = conn.send_command(check_command[device["device_type"]])        lines = output.splitlines()        # 统计变量        total_port = 0        up_port = 0        down_port = 0        error_port = 0        # 解析华为设备端口信息(华三逻辑一致,思科需微调解析规则)        for line in lines[1:]:            if not line.strip() or "PHY" in line or "Protocol" in line:                continue            # 按空格分割行数据,过滤空值            parts = list(filter(None, line.split()))            if len(parts) < 6:                continue            # 提取端口信息            port_name = parts[0]            phy_status = parts[1]            protocol_status = parts[2]            in_error = parts[3]            out_error = parts[4]            crc_error = parts[5]            # 统计端口数量            total_port += 1            if phy_status == "up" and protocol_status == "up":                up_port += 1            if phy_status == "*down" or phy_status == "down":                down_port += 1            # 判断是否有异常错包            has_error = int(in_error) > 0 or int(out_error) > 0 or int(crc_error) > 0            if has_error:                error_port += 1            # 写入Excel            row = device_ws.append([port_name, phy_status, protocol_status, in_error, out_error, crc_error])            # 异常标红            row_num = device_ws.max_row            if phy_status == "down":                device_ws[f"B{row_num}"].fill = red_fill            if has_error:                device_ws[f"D{row_num}"].fill = yellow_fill                device_ws[f"E{row_num}"].fill = yellow_fill                device_ws[f"F{row_num}"].fill = yellow_fill        # 写入汇总表        check_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")        summary_ws.append([device_name, device_ip, total_port, up_port, down_port, error_port, "巡检成功", check_time])        print(f" {device_name} 巡检完成!发现 {down_port} 个DOWN端口,{error_port} 个异常错包端口")        conn.disconnect()    except Exception as e:        check_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")        summary_ws.append([device_name, device_ip, 0000f"巡检失败:{str(e)}", check_time])        print(f" {device_name} 巡检失败!原因:{str(e)}")# 保存巡检报告today = datetime.datetime.now().strftime("%Y-%m-%d")excel_path = f"全网设备端口巡检报告_{today}.xlsx"wb.save(excel_path)print(f"\n 全网巡检任务完成!报告已保存至:{excel_path}")

【使用方法】

1. 修改 device_list 添加你的设备信息;

2. 思科设备需微调解析规则,代码内已标注;

3. 保存代码为 port_inspection.py ,运行后自动生成带标红的Excel巡检报告。

【进阶扩展】

可在代码中添加CPU/内存使用率、设备温度、光模块收发光功率的采集,适配更全面的巡检需求。

脚本3:IPv4/IPv6子网划分与地址管理工具

【适用场景】

网络规划、子网划分、IP地址台账管理,自动计算子网网络地址、广播地址、可用地址范围、可用主机数量,批量扫描网段内存活IP,生成地址使用台账,告别手动计算器计算、手动ping测的麻烦,完美适配之前的IPv4/IPv6子网划分推文内容。

【完整可运行代码】

import ipaddressfrom ping3 import pingfrom openpyxl import Workbookimport datetime# ====================== 用户自定义参数(仅需修改这里)======================# 需要计算的网段,支持IPv4/IPv6,格式如"192.168.1.0/24"、"2001:db8::/48"target_network = "192.168.10.0/24"# 需要划分的子网前缀,如/26、/27,不划分则填Nonesplit_prefix = 26# 是否扫描网段内存活IP,True=扫描,False=不扫描scan_alive_ip = True# 扫描超时时间(秒)scan_timeout = 0.2# ==========================================================================# 创建Excel地址台账wb = Workbook()# 子网计算结果表calc_ws = wb.activecalc_ws.title = "子网计算结果"calc_ws.append(["序号""子网网络地址""前缀长度""子网掩码""广播地址""可用地址范围""可用主机数量"])print(f"===== 子网划分计算结果 =====")print(f"原始网段:{target_network}")print(f"划分后子网前缀:/{split_prefix}" if split_prefix else "不划分子网,仅计算基础信息")print("-" * 80)try:    # 解析原始网段    network = ipaddress.ip_network(target_network, strict=False)    # 划分子网    if split_prefix:        subnets = list(network.subnets(new_prefix=split_prefix))    else:        subnets = [network]    # 遍历子网计算信息    for index, subnet in enumerate(subnets, 1):        net_addr = subnet.network_address        prefix = subnet.prefixlen        netmask = subnet.netmask        broadcast = subnet.broadcast_address        first_host = subnet[1]        last_host = subnet[-2]        available_count = subnet.num_addresses - 2 if subnet.version == 4 else subnet.num_addresses        # 写入Excel        calc_ws.append([            index, str(net_addr), f"/{prefix}"str(netmask),            str(broadcast), f"{first_host} ~ {last_host}", available_count        ])        # 控制台打印        print(f"【子网{index}{net_addr}/{prefix}")        print(f"子网掩码:{netmask} | 广播地址:{broadcast}")        print(f"可用地址范围:{first_host} ~ {last_host}")        print(f"可用主机数量:{available_count}")        print("-" * 80)    # IP存活扫描    alive_ws = wb.create_sheet(title="IP存活扫描结果")    alive_ws.append(["IP地址""是否存活""响应时间(ms)""扫描时间"])    alive_ip_list = []    if scan_alive_ip and network.version == 4:        print(f"===== 开始扫描网段 {target_network} 存活IP =====")        for ip in network.hosts():            ip_str = str(ip)            response = ping(ip_str, timeout=scan_timeout)            scan_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")            if response:                delay = round(response * 10002)                alive_ws.append([ip_str, "存活", delay, scan_time])                alive_ip_list.append(ip_str)                print(f" {ip_str} 存活,响应时间:{delay}ms")            else:                alive_ws.append([ip_str, "不可达""-", scan_time])        print(f"===== 扫描完成,共发现 {len(alive_ip_list)} 个存活IP =====")    # 保存台账    today = datetime.datetime.now().strftime("%Y-%m-%d")    excel_path = f"子网划分与IP地址台账_{today}.xlsx"    wb.save(excel_path)    print(f"\n 子网计算完成!台账已保存至:{excel_path}")except ValueError as e:    print(f" 网段格式错误!请检查输入的网段是否正确,错误原因:{str(e)}")except Exception as e:    print(f" 程序运行失败!原因:{str(e)}")

【使用方法】

1. 修改 target_network 为你需要计算的网段,支持IPv4/IPv6;

2.  split_prefix 填写你要划分的子网前缀,不划分则填 None ;

3.  scan_alive_ip 设置是否扫描存活IP,大型网段建议关闭,避免扫描时间过长;

4. 保存代码为 subnet_calc.py ,运行后自动生成Excel地址台账。

【核心优势】

- 完美适配RFC标准,计算结果零错误;

- 支持IPv4/IPv6双栈,覆盖所有子网划分场景;

- 自动扫描存活IP,告别手动一个个ping测,大幅提升地址盘点效率。

脚本4:网络设备配置批量下发脚本(新开局/整改神器)

【适用场景】

新开局设备批量下发基础配置、全网设备统一整改配置(如SNMP、NTP、日志服务器、ACL策略),不用一台台设备登录敲命令,自动批量下发、校验配置结果,生成执行报告,大幅提升开局/整改效率,降低人为配置错误。

【完整可运行代码】

from netmiko import ConnectHandlerfrom openpyxl import Workbookimport datetime# ====================== 用户自定义参数(仅需修改这里)======================device_list = [    {        "device_type""huawei",        "ip""192.168.99.1",        "username""admin",        "password""Admin@123",        "device_name""接入交换机SW5"    },    {        "device_type""huawei",        "ip""192.168.99.2",        "username""admin",        "password""Admin@123",        "device_name""接入交换机SW6"    }]# 需要批量下发的配置命令,按设备厂商分类,一行一条命令config_commands = {    "huawei": [        "sysname SW_New",        "ntp-service unicast-server 192.168.99.100",        "info-center loghost 192.168.99.100",        "snmp-agent community read Admin@123",        "snmp-agent target-host trap address udp-domain 192.168.99.100 params securityname Admin@123 v2c"    ],    "h3c": [        "sysname SW_New",        "ntp-service unicast-server 192.168.99.100",        "info-center loghost 192.168.99.100",        "snmp-agent community read Admin@123",        "snmp-agent target-host trap address udp-domain 192.168.99.100 params securityname Admin@123 v2c"    ],    "cisco_ios": [        "hostname SW_New",        "ntp server 192.168.99.100",        "logging host 192.168.99.100",        "snmp-server community Admin@123 RO",        "snmp-server host 192.168.99.100 version 2c Admin@123"    ]}# ==========================================================================# 创建执行报告Excelwb = Workbook()ws = wb.activews.title = "配置下发执行报告"ws.append(["设备名称""管理IP""设备厂商""下发命令总数""执行状态""失败原因""执行完成时间"])# 批量下发配置for device in device_list:    device_name = device["device_name"]    device_ip = device["ip"]    print(f"正在连接设备:{device_name} ({device_ip})")    try:        # 连接设备,进入系统视图        conn = ConnectHandler(**device)        conn.enable()        # 获取对应厂商的配置命令        commands = config_commands[device["device_type"]]        command_count = len(commands)        # 下发配置        output = conn.send_config_set(commands)        # 保存配置        if device["device_type"] == "huawei" or device["device_type"] == "h3c":            conn.save_config()        else:            conn.send_command("write memory")        # 记录执行结果        finish_time = datetime.datetime.now().strftime("%Y-%m-%d%H:%M:%S")        ws.append([device_name, device_ip, device["device_type"], command_count, "下发成功""", finish_time])        print(f" {device_name} 配置下发成功!共下发{command_count}条命令,已保存配置")        print("执行输出:")        print(output)        conn.disconnect()    except Exception as e:        finish_time = datetime.datetime.now().strftime("%Y-%m-%d%H:%M:%S")        ws.append([device_name, device_ip, device["device_type"], 0"下发失败", str(e), finish_time])        print(f" {device_name} 配置下发失败!原因:{str(e)}")# 保存执行报告today = datetime.datetime.now().strftime("%Y-%m-%d")excel_path = f"批量配置下发执行报告_{today}.xlsx"wb.save(excel_path)print(f"\n 批量配置下发任务完成!报告已保存至:{excel_path}")

【使用方法】

1. 在 device_list 里添加需要下发配置的设备信息;

2. 在 config_commands 里按厂商填写需要下发的配置命令,一行一条;

3. 保存代码为 batch_config.py ,运行前建议先拿1台测试设备验证配置命令的正确性,避免全网配置错误;

4. 运行后自动生成执行报告,记录每台设备的下发结果。

【避坑指南】

1. 高危配置(如ACL、端口关闭、路由修改)建议先单台测试,再批量下发;

2. 配置命令要完整,避免出现需要交互确认的命令,导致脚本卡住;

3. 可在代码中添加配置校验步骤,下发完成后执行 display current-configuration ,校验配置是否真正生效。

三、网工Python自动化常见踩坑避坑指南

1. 设备连接失败高频问题

- 问题1:SSH连接被拒绝,检查设备是否开启SSH服务、VTY是否允许SSH接入、防火墙是否放通22端口;

- 问题2:认证失败,检查账号密码是否正确、账号是否有SSH权限、特权等级是否足够;

- 问题3:连接超时,检查运维电脑和设备是否能ping通、是否有网络延迟,在设备信息里添加 timeout: 30 延长超时时间。

2. 配置乱码/命令执行失败

- 问题1:输出内容乱码,将编码从 utf-8 改为 gbk ,适配部分国产设备的编码格式;

- 问题2:命令不生效,检查设备的配置视图是否正确,华为/华三设备需要进入系统视图才能下发配置;

- 问题3:命令执行一半卡住,检查是否有需要交互确认的命令,在命令末尾添加 force 等强制参数,避免交互。

关注我,后续持续分享更多网工自动化实战技巧、企业网运维干货、厂商认证备考内容,带你从零开始掌握网络自动化。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 11:41:40 HTTP/2.0 GET : https://f.mffb.com.cn/a/482294.html
  2. 运行时间 : 0.090650s [ 吞吐率:11.03req/s ] 内存消耗:4,779.95kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=0842c3fa6ed044602ed7098821bedfac
  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.000426s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000687s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000273s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000303s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000483s ]
  6. SELECT * FROM `set` [ RunTime:0.000214s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000625s ]
  8. SELECT * FROM `article` WHERE `id` = 482294 LIMIT 1 [ RunTime:0.001888s ]
  9. UPDATE `article` SET `lasttime` = 1774582900 WHERE `id` = 482294 [ RunTime:0.003051s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000253s ]
  11. SELECT * FROM `article` WHERE `id` < 482294 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000413s ]
  12. SELECT * FROM `article` WHERE `id` > 482294 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000528s ]
  13. SELECT * FROM `article` WHERE `id` < 482294 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001050s ]
  14. SELECT * FROM `article` WHERE `id` < 482294 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001766s ]
  15. SELECT * FROM `article` WHERE `id` < 482294 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001534s ]
0.092310s