python3 安装使用 fabirc3 模块以及 fab 命令(转)
原文地址:https://blog.csdn.net/cityzenoldwang/article/details/78454964
python3 fabric3 模块之 fab 命令
安装
pip3 install fabric3
fabric 依赖第三方 setuptools,crypto,paramiko,所以推荐使用 pip3 安装,会自动匹配依赖包。注意是 fabric3
。
如果使用 pip3 install fabric ,在导入的之后执行的时候会有问题。
fab 语法
fab 是 fabric 程序的命令行入口,在命令行使用!!!
,语法:
fab [options] <command>[arg1,arg2:val2,host=foo]
fab 命令的执行,默认依赖一个 fabfile.py 的文件
,可以对该文件进行编辑,也可以执行其他的文件,用 -f 参数指定文件即可。
fab 参数
可以使用 fab -help 查看具体参数:
-l, 显示定义好的任务函数名
-f, 指定 fab 入口文件,默认 fabfile.py
-g, 指定网关设备,比如堡垒机环境,填写堡垒机 ip 即可
-H, 指定目标主机,多台用逗号隔开
-P 以异步并行方式运行多主机任务,默认串行运行
-R, 指定 role,以角色名区分不同业务组设备
-t 设置设备连接超时时间
-T 设置远程主机命令执行超时时间
-w 当命令失败的时候,发出警告,而不是终止任务
-p 指定密码
fabric 常用 api
fabric 执行本地命令和远程命令,必须先导入 fabric 对应的 api 接口。
常用 api
local 执行本地命令
lcd 切换本地目录 cd 切换远程目录
run 执行远程命令
sudo sudo 方式执行远程命令
put 上传本地文件到远程主机
get 从远程主机下载文件到本地
prompt 获得用户输入信息
confirm 获得提示信息确认
reboot 重启远程主机 @task 函数修饰符,标识的函数为 fab 可调用的,不标记的对 fab 不可见。
@runs_once 函数修饰符,标识的函数只会执行一次,不受多台主机影响
@roles, 函数修饰符,配合 env.roledefs 的角色使用
@task 函数修饰符
在下面的实验中并没有试验出结果,即便不是调用默认 fabric.py 中的函数,也无需使用 @task 函数修饰符,直接调用 fun 函数的名称即可。
api 调用方法
from fabric.api import *
env.hosts = 'localhost' def hello():
local('echo hello world') def check():
local('ls /Users/') def remote():
run('ping www.baidu.com')
env 全局环境变量
导入 env 变量
from fabric.api import evn
env.hosts, 定义目标主机,多个主机用列表的形式体现
env.exclude_hosts, 排除指定的主机,env.exclude_hosts=['192.168.184.2'] env.user, 定义用户名
env.port, 定义目标主机端口 env.password, 定义密码
env.passwords, 与 password 功能一样,需要指定主机。env.passwords = {'user1@host':'password','user2@host':'password'} env.gateway, 定义网关(中转、堡垒机)IP env.roledefs, 定义角色分组。env.roledefs = {'webserver':['host1','host2'], 'dbserver':['db1','db2']} env.deploy_release_dir 自定义全局变量,env.deploy_release_dir, env.age, env.sex 等等
示例
fab 依赖的 fabric.py 文件中创建函数。
import fabric.api def hello():
fabric.api.local('echo hello world') def check():
fabric.api.local('ls /Users/') def remote():
fabric.api.run('ping www.baidu.com')
在命令行执行命令的时候,使用 fab + fun函数即可。
$ fab hello
$ fab check
指定其他文件调用 fabric
from fabric.api import local, lcd
import os def hello():
print('hello sucre') def cwd():
dir = os.getcwd()
print(dir)
执行远程命令
fab 最牛的功能,就是可以在远程主机上执行命令。
from fabric.api import * env.user = 'root'
env.hosts = ['192.168.184.2', '192.168.184.22']
env.password = 'yourpassword'
env.passwords = {
'staging': '',
'build': ''
}
env.roledefs = {
'webserver': ['bjhee@example1.com','bjhee@example2.com'],
'dbserver': ['build@example3.com']
} @roles('webserver')
def remote_task():
with cd('/data/logs'): # with 的左右是让后面的表达式,继承前面的状态
run('ls -l') # 实现 'cd /data/logs/ && ls -l' 的效果 @roles('dbserver')
def remote_build():
with cd('/tmp/citizen_wang'):
run('git pull') def remote_deploy():
run('tar zxvf /tmp/fabric.tar.gz')
run('mv /tmp/fabric/setup.py /home/www/') def task():
execute(remote_build)
execute(remote_deploy)
命令行调用:
$ fab task
$ fab remote_build
$ fab -R webserver deploy # 指定 build 角色执行 deploy 命令
put、get 语法
get('/remote/path/filename', '/local/path/filename') put('/local/path/filename','/remote/path/filename'[, use_sudo=True]) reboot(wait=)
fabric 通过密钥链接远程主机
python3 安装使用 fabirc3 模块以及 fab 命令(转)的更多相关文章
- python3安装pandas执行pip3 install pandas命令后卡住不动的问题及安装scipy、sklearn库的numpy.distutils.system_info.NotFoundError: no lapack/blas resources found问题
一直尝试在python3中安装pandas等一系列软件,但每次执行pip3 install pandas后就卡住不动了,一直停在那,开始以为是pip命令的版本不对,还执行过 python -m pip ...
- Python3安装mysql模块
pip3 install mysql 1.错误1 原因:在 Python 3.x 版本后,ConfigParser.py 已经更名为 configparser.py 所以出错! 解决,将模块cp一份为 ...
- Python3安装Celery模块后执行Celery命令报错
1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...
- python3 安装pip提示没有distutils.util模块错误的解决
Python3 安装pip 提示ModuleNotFoundError: No module named 'distutils.util' 环境ubutun14,python版本是python3. ...
- 苹果电脑python3安装pillow模块
我刚开始在苹果电脑自带的python 中安装了pillow模块,导致在后期我想在python3中安装pilow模块的时候 pip3 install pillow 但是总会提示错误说电脑中已经存在pil ...
- npm 安装、卸载 模块或包的命令(转载)
npm安装卸载命令 来源:https://www.jianshu.com/p/e6ee00ea03cd npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目 ...
- python3安装模块,摘自网上
配置好Python3.6和pip3安装EPEL和IUS软件源 yum install epel-release -y yum install https://centos7.iuscommunity. ...
- 关于Python3.6中Twisted模块安装的问题
今天准备学习爬虫的scrapy模块,在这之前需要安装许多别的模块,Twisted就是其一 一开始想着直接用pycharm来安装就行了,没想到安装了一会就报错了,如下 后来就换到命令提示符来安装,在官网 ...
- Python3安装turtle提示错误:Command "python setup.py egg_info" failed with error code 1
Python3安装turtle提示错误:Command "python setup.py egg_info" failed with error code 1 Python3.5安 ...
随机推荐
- Pythagorean Triples 707C
Katya studies in a fifth grade. Recently her class studied right triangles and the Pythagorean theor ...
- jenkins com.jcraft.jsch.JSchException: Auth cancel
jenkins构建时报如下错误: 首先去系统管理--->系统设置上看看SCP插件中的用户名和密码是否正确
- 转:用JS获取地址栏参数的方法(超级简单)
转载链接: http://www.cnblogs.com/fishtreeyu/archive/2011/02/27/1966178.html 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实 ...
- Android DevArt2:Android 5.0下 Dialog&AlertDialog 并不会影响Activity的生命周期
先给出结论:Dialog和AlertDialog并不会影响到Activity的生命周期,但会影响到Activity的优先级. 核心代码: onCreated中: Resources resources ...
- sp_executesql 或者 EXECUTE 执行动态sql的权限问题
当 sp_executesql 或 EXECUTE 语句执行字符串时,字符串将作为它的自包含批处理执行.SQL Server 会将字符串中的一个或多个 Transact-SQL 语句编译为独立于批处理 ...
- HttpURLConnection 添加代理
//创建代理服务器 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("www.proxyaddress.com& ...
- Jupyter notebook 文件路径
Jupyter notebook 文件路径 1. 默认工作路径:C:\Users\think 2. 修改工作路径: C:\Users\think\.jupyter路径下,无配置文件 打开命令提示符:( ...
- 慕容小匹夫 Unity3D移动平台动态读取外部文件全解析
Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一 ...
- How to fix the bug “Expected "required", "optional", or "repeated".”?
参考:https://github.com/tensorflow/models/issues/1834 You need to download protoc version 3.3 (already ...
- win10虚拟桌面;一不小心按错了突然只剩下桌面,启动的程序都没了
先说如何关闭虚拟桌面:ctrl+win+F4(万一你还没看到怎么关闭虚拟桌面,就创建并调整到虚拟桌面,会很懵的,因为你启动的所有程序全部都突然消失了,只剩下开机的桌面了): win10有个功能,虚拟桌 ...