Fabric是Python中用于部署应用和运维的工具库,它允许用户通过命令行执行本地或远程shell命令,并且可以将这些命令组织成可重用的任务。使用Fabric,开发人员可以将部署过程中经常使用的重复命令编写成脚本,从而简化部署流程。下面详细介绍如何利用Fabric包来完成代码上传部署的关键知识点。 安装Fabric包是使用这个库的前提条件。可以通过pip工具安装Fabric包。安装命令一般如下所示: ```bash pip install fabric ``` 安装完毕之后,使用Fabric执行任务需要通过命令行指定fab的入口文件,默认为`fabfile.py`。如果要执行特定任务,可以通过`-f`参数指定入口文件,同时通过`-l`参数列出所有定义好的任务函数名。`-H`参数可以指定目标主机,如果多台主机则用逗号分隔。 Fabric提供了一些常用的API来执行不同的操作: - `local`: 执行本地命令,例如 `local('uname -s')`。 - `lcd`: 切换本地目录,例如 `lcd('/home')`。 - `cd`: 切换远程目录,例如 `cd('/etc')`。 - `run`: 执行远程命令,例如 `run('free -m')`。 - `sudo`: 以sudo方式执行远程命令,例如 `sudo('touch /abc')`。 - `put`: 上传本地文件到远程主机,例如 `put('/hello', '/home/baagee/hello')`。 - `get`: 从远程主机下载文件到本地,例如 `get('/home/python/world', '/home/baagee/world')`。 - `reboot`: 重启远程主机,例如 `reboot()`。 Fabric通过装饰器来标识可被Fabric调用的任务函数。`@task`装饰器用来标示一个函数是任务,可以被fab命令调用。如果使用了`@runs_once`装饰器,则表示该函数只执行一次,不受多台主机影响,即执行一次后,即使有其他主机也不会再次执行。 全局属性的设置也是Fabric中非常重要的部分,这些属性定义了一些默认值,可以在fabfile中直接使用,也可以在命令行执行时被覆盖。全局属性包括: - `env.hosts`: 定义目标主机列表。 - `env.user`: 默认用户名。 - `env.port`: 默认远程主机端口,默认为22。 - `env.password`: 默认密码。 - `env.passwords`: 不同主机的密码字典,用于特定主机。 在Fabfile中,首先需要导入Fabric的API模块,然后定义要执行的任务函数。例如,定义一个`host_type`任务函数用于远程执行`uname -s`命令,并且通过命令行指定执行的主机和用户名。 ```python from fabric.api import run, env env.hosts = ['***.***.***.***', '***.***.***.***'] env.user = 'root' @task def host_type(): run('uname -s') ``` 要执行这个任务,可以在命令行中运行: ```bash fab -f fabfile.py host_type -H baagee@***.***.***.*** ``` 还可以通过Fabfile实现动态获取远程目录列表的任务。例如,定义`input_raw`函数用于获取用户输入的目录名,然后定义`workask`函数用于执行远程`ls -l`命令,最后定义`go`函数作为入口函数,获取目录名后执行`workask`函数。 ```python from fabric.api import run, prompt env.hosts = ['***.***.***.***'] env.user = 'baagee' env.password = 'ubuntu@2017' @runs_once def input_raw(): return prompt("please input directory name:", default="/home") def workask(dirname): run('ls -l ' + dirname) @task def go(): print('start') dirname = input_raw() workask(dirname) print('end') ``` 执行这个任务,可以在命令行中运行: ```bash fab -f fabfile.py go ``` 根据上述内容,使用Fabric包完成代码上传部署的过程包括安装Fabric包、定义fabfile.py任务、设置全局属性、执行命令行任务等多个步骤。通过灵活使用Fabric提供的命令和API,可以有效地管理远程服务器上的操作,实现自动化部署。





























- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整

- 粉丝: 698
- 资源: 4万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 汇编语言-汇编语言资源
- 安卓模拟器开发资源包下载2
- 安卓模拟器开发资源包下载3
- 基于多目标灰狼算法的冷热电综合三联供微网低碳调度MATLAB仿真研究,基于多目标灰狼算法的冷热电综合三联供微网低碳调度MATLAB仿真研究, 基于多目标灰狼算法的冷热电综合三联供微网低碳经济 MATL
- hikyuu-C++资源
- 安卓模拟器开发资源包下载4
- 安卓模拟器开发资源包下载5
- 自动驾驶技术中的车道线检测与可行驶区域识别开发研究:仿真平台下的车辆自动控制功能实现实验分析,仿真平台上的自动驾驶车道可行驶区域检测与自动控制功能研究,自动驾驶对于车道线检测算法,可行驶区域识别开发
- lilishop 商城 java商城-Java资源
- 安卓模拟器开发资源包下载6
- QPython Plus-Python资源
- EFIconFont-Swift资源
- 基于Vue框架开发的教师工作量系统前端设计源码
- MATLAB 绘图复刻-Matlab资源
- 基于Comsol模拟的三层顶板随机裂隙浆液扩散模型研究:考虑重力影响下的DFN插件应用与达西定律储水模型控制方程分析,基于Comsol模拟的三层顶板随机裂隙浆液扩散模型研究:考虑重力影响下的DFN插件
- 直流有刷电机控制代码开发:按键实现正反转调控,数码管实时显示,蜂鸣器与LED指示灯协同指示功能,直流有刷电机控制代码开发:按键实现正反转调控,数码管实时显示,蜂鸣器与LED指示灯协同指示功能,直流有刷


