当前位置:首页>python>用 Python 操作 SSH 远程执行命令 | 第四篇

用 Python 操作 SSH 远程执行命令 | 第四篇

  • 2026-03-28 15:51:35
用 Python 操作 SSH 远程执行命令 | 第四篇

第四篇:用 Python 操作 SSH 远程执行命令

---

前面几篇都是本地操作,这一篇开始学习远程操作。SSH 是网络设备管理的标配,学会用 Python 操作 SSH,就能批量管理服务器和网络设备了。

本篇介绍如何使用 paramiko 库连接 SSH 并执行命令。

---

安装依赖

【bash】

pip install paramiko

在虚拟环境中安装:

【bash】

E:\qclawdata\.venv\Scripts\python.exe -m pip install paramiko

---

SSH 基础连接

paramiko 是 Python 最流行的 SSH 库,用它可以远程执行命令、传输文件。

【python】

import paramiko import time def ssh_connect(host, port=22, username='root', password=None, key_file=None):    """    建立 SSH 连接。    参数:        host (str): 主机 IP 或域名        port (int): SSH 端口,默认 22        username (str): 用户名        password (str): 密码(与 key_file 二选一)        key_file (str): 私钥文件路径    返回:        paramiko.SSHClient: SSH 客户端对象    """    # 创建 SSH 客户端    ssh = paramiko.SSHClient()        # 自动添加未知主机密钥(生产环境建议使用 known_hosts)    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())        try:        if key_file:            # 使用密钥连接            key = paramiko.RSAKey.from_private_key_file(key_file)            ssh.connect(                hostname=host,                port=port,                username=username,                pkey=key,                timeout=10            )        else:            # 使用密码连接            ssh.connect(                hostname=host,                port=port,                username=username,                password=password,                timeout=10            )                print(f"✅ 成功连接到 {host}")        return ssh            except Exception as e:        print(f"❌ 连接失败: {e}")        return None def ssh_exec_command(ssh, command, timeout=30):    """    执行 SSH 命令。    参数:        ssh: paramiko.SSHClient 对象        command (str): 要执行的命令        timeout (int): 超时时间(秒)    返回:        tuple: (stdin, stdout, stderr)    """    try:        stdin, stdout, stderr = ssh.exec_command(command, timeout=timeout)                # 获取输出        stdout_text = stdout.read().decode('utf-8', errors='ignore')        stderr_text = stderr.read().decode('utf-8', errors='ignore')                return stdout_text, stderr_text            except Exception as e:        return '', str(e) def ssh_disconnect(ssh):    """    关闭 SSH 连接    """    if ssh:        ssh.close()        print("🔌 SSH 连接已关闭") if __name__ == '__main__':    # 测试连接(请修改为你的服务器信息)    # 这是模拟代码,实际使用需要真实的 SSH 服务器        # 方法1:密码连接    # ssh = ssh_connect('192.168.1.100', username='admin', password='password')        # 方法2:密钥连接    # ssh = ssh_connect('192.168.1.100', username='admin', key_file='id_rsa')        print("SSH 连接代码已准备好,请配置实际参数后使用")

---

实际连接测试

由于我们没有真实的 SSH 服务器,这里展示完整的使用示例:

【python】

import paramiko def ssh_command_demo():    """    完整的 SSH 命令执行示例    """    host = '192.168.1.100'   # 替换为实际 IP    port = 22    username = 'root'          # 替换为实际用户名    password = 'your_password' # 替换为实际密码        # 建立连接    ssh = paramiko.SSHClient()    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())        try:        print(f"正在连接 {host}...")        ssh.connect(host, port=port, username=username, password=password)        print(f"✅ 连接成功")                # 执行命令        commands = [            'uname -a',           # 查看系统信息            'df -h',              # 查看磁盘空间            'free -m',            # 查看内存            'whoami',             # 查看当前用户        ]                for cmd in commands:            print(f"\n$ {cmd}")            print("-" * 40)                        stdin, stdout, stderr = ssh.exec_command(cmd)                        stdout_text = stdout.read().decode('utf-8', errors='ignore')            stderr_text = stderr.read().decode('utf-8', errors='ignore')                        if stdout_text:                print(stdout_text, end='')            if stderr_text:                print(f"错误: {stderr_text}", end='')            except paramiko.AuthenticationException:        print("❌ 认证失败,请检查用户名和密码")    except paramiko.SSHException as e:        print(f"❌ SSH 错误: {e}")    except Exception as e:        print(f"❌ 连接错误: {e}")    finally:        ssh.close()        print("\n🔌 连接已关闭") if __name__ == '__main__':    ssh_command_demo()

预期输出:

【代码】

$ uname -a ---------------------------------------- Linux server01 5.4.0-generic #1 SMP x86_64 GNU/Linux $ df -h ---------------------------------------- Filesystem      Size  Used Avail Use% Mounted on /dev/sda1       100G   45G   55G  45% / tmpfs           16G     0   16G   0% /dev/shm $ free -m ----------------------------------------              total        used        free      shared  buff/cache   available Mem:          32000        2048       24000         512        5500       29000 Swap:          8192           0        8192 $ whoami ---------------------------------------- root 🔌 连接已关闭

---

SSH 连接池:复用连接

频繁创建 SSH 连接开销大,可以使用连接池:

【python】

import paramiko from queue import Queue import threading class SSHPool:    """    SSH 连接池,支持多线程复用连接    """        def __init__(self, host, port, username, password, pool_size=5):        self.host = host        self.port = port        self.username = username        self.password = password        self.pool_size = pool_size        self.pool = Queue()        self._init_pool()        def _create_connection(self):        """创建新的 SSH 连接"""        ssh = paramiko.SSHClient()        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())        ssh.connect(            self.host,            port=self.port,            username=self.username,            password=self.password        )        return ssh        def _init_pool(self):        """初始化连接池"""        for _ in range(self.pool_size):            conn = self._create_connection()            self.pool.put(conn)        def get_connection(self):        """获取一个连接"""        return self.pool.get()        def return_connection(self, conn):        """归还连接"""        self.pool.put(conn)        def execute(self, command):        """执行命令(自动获取和归还连接)"""        conn = self.get_connection()        try:            stdin, stdout, stderr = conn.exec_command(command)            result = stdout.read().decode('utf-8', errors='ignore')            return result        finally:            self.return_connection(conn)        def close(self):        """关闭所有连接"""        while not self.pool.empty():            conn = self.pool.get()            conn.close() if __name__ == '__main__':    # 使用连接池    pool = SSHPool(        host='192.168.1.100',        port=22,        username='admin',        password='password',        pool_size=3    )        # 执行多条命令    for i in range(5):        result = pool.execute('echo hello')        print(f"第{i+1}次: {result.strip()}")        pool.close()

---

交互式 SSH 会话

有时候需要执行多个命令并保持会话,可以这样做:

【python】

import paramiko import sys import tty import termios def interactive_ssh(host, port, username, password):    """    创建交互式 SSH 会话    (类似终端操作)    """    ssh = paramiko.SSHClient()    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())    ssh.connect(host, port=port, username=username, password=password)        # 打开交互式 shell    channel = ssh.invoke_shell()        print(f"已连接到 {host},输入 exit 退出")        # 设置终端    old_settings = termios.tcgetattr(sys.stdin)        try:        tty.setraw(sys.stdin)                while True:            if channel.recv_ready():                data = channel.recv(1024)                sys.stdout.write(data.decode())                sys.stdout.flush()                        if channel.send_ready():                key = sys.stdin.read(1)                if key == '\x03':  # Ctrl+C                    break                channel.send(key)                    finally:        termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)        ssh.close() if __name__ == '__main__':    print("交互式 SSH 会话代码已准备好")    print("使用方法: interactive_ssh('IP', 22, '用户名', '密码')")

---

常见错误处理

【python】

import paramiko def ssh_with_error_handling():    """    带错误处理的 SSH 连接示例    """    host = '192.168.1.100'    username = 'admin'    password = 'wrong_password'        ssh = paramiko.SSHClient()    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())        try:        # 连接        ssh.connect(host, username=username, password=password, timeout=10)            except paramiko.AuthenticationException:        print("❌ 认证失败 - 用户名或密码错误")            except paramiko.SSHException as e:        print(f"❌ SSH 协议错误: {e}")            except TimeoutError:        print("❌ 连接超时 - 主机不可达")            except Exception as e:        print(f"❌ 其他错误: {e}")            finally:        ssh.close() if __name__ == '__main__':    ssh_with_error_handling()

---

实际应用场景

1. 批量执行命令 — 同时在多台服务器上执行相同命令

2. 配置文件下发 — 批量修改多台设备的配置

3. 日志收集 — 远程登录收集日志

4. 自动化运维 — 集成到运维系统

---

注意事项

  • 密码 vs 密钥:生产环境推荐使用密钥认证,更安全
  • known_hosts:生产环境应该管理 known_hosts 文件,不要自动添加
  • 超时设置:一定要设置 timeout,避免连接卡死
  • 连接池:频繁操作时使用连接池,减少连接开销
  • 错误处理:网络不稳定,做好重试机制
  • ---

  • 测试环境说明

  • Python 版本: 3.14.3
  • 操作系统: Windows 10
  • 依赖库: paramiko
  • ---

  • 下篇预告

  • 第五篇我们将学习如何批量 SSH 执行命令,实现真正的自动化运维。

  • ---

  • 相关历史文章

  • 用 Python 获取本机网络信息

  • 用 Python ping 检测主机存活

  • 用 Python 扫描局域网存活主机

  • 使用 json 文件作为配置文件

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-28 16:12:37 HTTP/2.0 GET : https://f.mffb.com.cn/a/483516.html
  2. 运行时间 : 0.118509s [ 吞吐率:8.44req/s ] 内存消耗:4,774.86kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b539831a271052f0d1f0e2938e2e72ce
  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.000592s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000950s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000328s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000314s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000470s ]
  6. SELECT * FROM `set` [ RunTime:0.000217s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000653s ]
  8. SELECT * FROM `article` WHERE `id` = 483516 LIMIT 1 [ RunTime:0.000529s ]
  9. UPDATE `article` SET `lasttime` = 1774685557 WHERE `id` = 483516 [ RunTime:0.019658s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000243s ]
  11. SELECT * FROM `article` WHERE `id` < 483516 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000629s ]
  12. SELECT * FROM `article` WHERE `id` > 483516 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000423s ]
  13. SELECT * FROM `article` WHERE `id` < 483516 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001453s ]
  14. SELECT * FROM `article` WHERE `id` < 483516 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004839s ]
  15. SELECT * FROM `article` WHERE `id` < 483516 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001050s ]
0.120131s