介绍

Fabric 是一个基于 Python 的开源工具库,主要用于简化远程服务器的自动化操作(如部署、管理、批量执行命令等)。它通过封装 SSH 协议,让开发者可以用 Python 代码定义 “任务”,并批量在多台远程服务器上执行,避免了手动登录服务器逐个操作的繁琐流程。

用代码替代 “手动 SSH 登录服务器 → 输入命令 → 等待结果” 的重复工作,尤其适合需要管理多台服务器的场景(如集群部署、批量配置等)。

特点

  • 基于 SSH 协议
  • 任务自动化
  • 支持多服务器与角色分组
  • 并行执行
  • Python 生态集成

应用场景

  • 批量部署应用:同时向多台 Web 服务器推送代码、安装依赖、重启服务。
  • 服务器监控:批量查看多台服务器的 CPU、内存、磁盘使用率。
  • 配置管理:统一在多台服务器上修改配置文件、创建用户、设置权限。
  • 日志收集:从多台服务器拉取日志文件到本地汇总分析。

安装

pip install fabric

快速开始

编写任务文件 fabfile.py
-f  指定fab入口文件,默认入口文件名为 fabfile.py

from fabric import task

# 定义名为 hello 的任务
@task
def hello(c):
    # 任务内容:可以是本地操作或远程服务器操作
    print("Hello from Fabric!")  # 本地打印
    # 也可以执行远程命令(如果指定了服务器)
    # c.run("echo 'Hello from remote server!'")

执行命令

fab hello

输出结果

Hello from Fabric!

常用参数

# fab --help     查看帮助
  
 常用参数
-l  显示定义好的任务函数名
-f  指定fab入口文件,默认入口文件名为fabfile.py.. 即指定fabfile文件
-g  指定网关(中转)设备,即HOST逗号分隔要操作的主机, 比如堡垒机环境,填写堡垒机IP即可.
-H  指定目标主机,多台主机用‘,’号分隔
-p  远程账号的密码,fab执行时默认使用root账户
-P  以异步并行方式运行多主机任务,默认为串行运行
-R  指定role(角色),以角色名区分不同业务组设备
-t  设置设备连接超时时间(秒)
-T  设置远程主机命令执行超时时间(秒)
-w  当命令执行失败,发出警告,而非默认中止任务。
 
其他参数:
--set=KEY=VALUE,...     逗号分隔,设置环境变量
--shortlist             简短打印可用命令
-c PATH                 指定本地配置文件
-D                      不加载用户known_hosts文件
-i PATH                 指定私钥文件
-k                      不加载来自~/.ssh下的私钥文件
--port=PORT             指定SSH连接端口
-R ROLES                根据角色操作,逗号分隔
-s SHELL                指定新shell,默认是'/bin/bash -l -c'
--show=LEVELS           以逗号分隔的输出
--ssh-config-path=PATH  SSH配置文件路径
-T N                    设置远程命令超时时间,单位秒
-u USER                 连接远程主机用户名
-x HOSTS                以逗号分隔排除主机
-z INT                  并发进程数

总结

Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以通过 SSH 的方式与远程服务器进行自动化交互, 实现本地或远程shell命令,包括:命令执行、文件上传、下载及完整执行日志输出等功能。

相关链接

官方文档

中文文档

https://www.cnblogs.com/kevingrace/p/5570240.html