python fabric模块
来源:互联网 发布:如何下载bilbil软件 编辑:程序博客网 时间:2024/06/07 20:13
fabfile1.fab 为fabric 命令行入口-l 显示定义好的任务函数名-f 指定fab入口文件,默认fabfile.py-g网关设备,如堡垒机-H指定目标主机多台用,分离-R指定role,以role区分不同业务组-P异步并行运行多主机任务,默认串行-t连接超时时间s-T远程执行命令超时时间-w执行失败是,发出警告2.evn全局设定,支持多个属性,包括目标主机,用户,密码,角色等env.host=['192.168.1.10','192.168.1.11']env.exclude_hosts=['192.168.1.10','192.168.1.11'] #排除主机env.user='root'env.port='22'env.password='password_key'env.passwords{'root@192.168.1.11:22':'key','root@192.168.1.12:22':'key','root@192.168.1.13:22':'key',}env.gateway='192.168.1.1'env.roledefs={'web':['192.168.1.10','192.168.1.11','192.168.1.13']'tomcat':['192.168.1.10','192.168.1.11']'db':['192.168.1.10','192.168.1.11']}角色引用示例:@roles('web')def webtask():run('/etc/init.d/nginx start')@roles('db')def dbtask():run('/etc/init.d/mysql start')@roles('db','web')def publictask():run('uptime')def deploy():execute(webtask)execute(dbtask)execute(publictask)例子:fab -H 192.168.1.86,192.168.1.156 -f fabfile.py host_type fabfile.py如下 #!/usr/bin/env python#--coding:utf8--from fabric.api import rundef host_type():run('hostname') 3.APIfabric 提供一组强大的fabric.api命令集local('hostname') 执行本地命令lcd('/home')切换本地目录cd('/')远程执行run('ifconfig')远程执行sudo('/etc/init.d/httpd restart')sudo 远程执行put(localpath,remotepath)上传get(remotepath,localpath)下载reboot()重启@task该函数为fab可调用,非标记对fab不可见@runs_once函数修饰符只执行一次不受多台主机影响例子:1#!/usr/bin/env python#--coding:utf8--from fabric.api import *env.user='root'env.hosts=['192.168.1.86','192.168.1.116']#env.password='pass_key'def host_type():run('hostname')@runs_oncedef local_task():local('hostname')def remote_task():with cd('~'):run('ls -l') 例子:2#!/usr/bin/env python#--coding:utf8--from fabric.api import *env.user='root'env.hosts=['192.168.1.86','192.168.1.116']#env.password='pass_key'@runs_oncedef input_raw():return prompt("input directory name:",default="/home")def worktask(dirname):run("ls -l "+dirname)@task def go():getdirname=input_raw()worktask(getdirname)执行 H1#fab -f fabfile.py go[192.168.1.86] Executing task 'go'input directory name: [/home] ~[192.168.1.86] run: ls -l ~例子3.from fabric.api import *from fabric.context_managers import *from fabric.contrib.console import confirmenv.user='root'env.hosts=['192.168.1.116','192.168.1.86']@task@runs_oncedef tar_task():with lcd("/upload/"):local("tar -czf web_html.tar.gz web_html")@taskdef put_task():run("mkdir -p /var/www/html")with cd("/upload/"):with settings(warn_only=True):#出现异常继续上传,而非终止result=put("/upload/web_html.tar.gz","/upload/web_html.tar.gz")if result.failed and not confirm("put file failed,Continue[Y/N]")abort("aborting file put task!") # 出现异常是提示是否继续@taskdef check_task():with settings(warn_only=True):#本地local命令 需要配置 capture=Ture 才能捕获返回码lmd5=local("md5sum /upload/web_html.tar.gz",capture=True).split(" ")[0]'''#md5sum v1.tar.gzd01edeea9e56be808d33487ee86f91b6 v1.tar.gz'''rmd5=run("md5sum /upload/web_html.tar.gz").split(" ")[0]if lmd5 == rmd5:print("local_md5 == remote_md5!")else:print("error")@taskdef go():tar_task()put_task()check_task()
0 0
- python fabric模块
- python Pexpect和Fabric模块对比分析
- python批量运维fabric模块
- python fabric
- python使用Fabric模块实现自动化运维
- Python运维自动化开发之Fabric模块
- 安装fabric模块小计
- Python部署管理工具fabric
- Python lib "Fabric"
- Python: overview of Fabric
- Python Fabric 部署工具
- 项目部署 python fabric
- Python fabric实践操作
- python Fabric库学习
- python fabric shell登录
- 利用python fabric模块写的批量操作远程主机脚本(命令执行,上传、下载文件)
- 使用Fabric模块编写的批量同步文件的python脚本
- fabric模块报错问题
- 通讯录实例
- 68. Pascal's Triangle II
- 60个开发者不容错过的免费资源库
- 【BLE】CC2541之OAD
- HTML学习笔记——(一)HTML简介
- python fabric模块
- 如何建立自己的技术壁垒
- Centos 6.5源码安装mysql_5.6.17
- HDU 2200 Eddy's AC难题(组合数学)
- 服务器之间建立信任关系
- Shadowsocks无法访问android主页(****.androd.com)的解决方法
- K-means算法原理与R语言实例
- 如果不小心把mysql的权限表删除了恢复方法
- hdu 3746 Cyclic Nacklace(KMP求循环节)