febric的使用
from fabric.api import *
from fabric.colors import *
from fabric.tasks import execute
'''
env.hosts = ['192.468.4.50','192.168.4.51']
env.user = 'root'
env.port = 22
env.password = '123456'
env.passwords = {
'root@192.168.4.50:22':'123456',
'root@192.168.4.51:22':'123456',
}
''' env.hosts = [
'root@192.168.4.50:22',
'root@192.168.4.51:22',
'root@192.168.4.52:22',
'root@192.168.4.53:22',
'root@192.168.4.54:22',
'root@192.168.4.55:22',
'root@192.168.4.56:22',
'root@192.168.4.57:22',
'root@192.168.4.58:22',
]
env.password = '' @runs_once
def xxx():
cmd = prompt('请输入要执行的命令:')
run(cmd) # 本地执行命令
@runs_once
def local_cmd(cmd, dir=None):
if dir == None:
dir ='/root'
with settings(hide('everything'), warn_only=True):
with lcd(dir): # 本地切换目录
result = local(cmd) # 本地执行命令
print(green(result)) # 远程执行命令
def remote_cmd(cmd, dir=None):
if dir == None:
dir = '/root'
with settings(hide('everything'), warn_only=True):
with cd(dir): # 远程切换目录
result= run(cmd) # 远程执行命令
print(green(result)) # 查看端口信息
def port_info(port):
cmd = "ss -autnlp | grep {}".format(port)
with settings(hide('everything'), warn_only=True):
result = run(cmd)
print(green(result)) # 安装软件
def install_soft(soft):
cmd = "yum -y install %s"%soft
with settings(hide('everything'), warn_only=True):
run(cmd)
cmd = "rpm -qa | grep %s"%soft
if cmd:
print(green('安装成功')) # 重启服务
def restart(service):
cmd = "systemctl restart {}".format(service)
with settings(hide('everything'), warn_only=True):
result = run(cmd)
print(green(result)) # 停止服务
def stop(service):
cmd = "systemctl stop {}".format(service)
with settings(hide('everything'), warn_only=True):
result = run(cmd)
print(green(result)) # 查看服务状态
def status(service):
cmd = "systemctl status {}".format(service)
with settings(hide('everything'), warn_only=True):
result = run(cmd)
print(green(result))
http://127.0.0.1:8000/
# 上传文件/压缩文件解压
def upload(src, tar=None):
if tar == None:
tar = src
with settings(hide('everything'), warn_only=True):
put(src, tar)
print(green('upload successful'))
print(tar[-3:])
if tar[-3:] == ".gz":
cmd = "tar -xf %s" % tar
run(cmd) # 下载文件
def download(src, tar=None):
if tar == None:
tar = src
with settings(hide('everything'), warn_only=True):
get(src, tar)
print(green('download successful')) #if __name__ == '__main__':
# execute(xxx)
# fab -f fabfile.py update
# fab -f fabfile.py port_status:80
from fabric.api import * env.user = 'root'
env.hosts = [
'192.168.4.50',
'192.168.4.51',
]
env.password = '' @runs_once # 只执行一次
@task
def local_update(dir):
with lcd(dir): # 切换到本地某目录下
local("git add -A")
local("git commit -m update")
local("git pull origin master")
local("git push origin master") @task
def remote_update(dir):
with cd(dir): # 切换到远程某目录
run("git checkout")
run("git pull origin master") @task
def deploy():
local_update()
remote_update()
from fabric.api import *
from fabric.context_managers import *
from fabric.contrib.console import confirm env.user = 'root'
env.gateway = '192.168.1.23' #定义堡垒机IP,作为文件上传、执行的中转设置
env.hosts = ['192.168.1.21','192.168.1.22']
env.passwords = {
'root@192.168.1.21:22':'',
'root@192.168.1.22:22':'abcdef',
'root@192.168.1.23:22':'123abc', #堡垒机账号信息
} lpackpath = '/home/install/lnmp.tar.gz' #本地安装包路径
rpackpath = '/tmp/install' #远程安装包路径 @task
def put_task(): #上传文件
run('mkdir -p /tmp/install')
#默认情况下,当命令执行失败时,Fabric会停止执行后续命令。有时,我们允许忽略失败的命令继续执行,比如run(‘rm /tmp/abc')在文件不存在的时候有可能失败,这时可以用with settings(warn_only=True):执行命令,这样Fabric只会打出警告信息而不会中断执行。
with settings(warn_only=True):
result = put(lpackpath,rpackpath) #上传
if result.failed and not confirm('put file failed,Continue[Y/N]?'):
abort('Aborting file put task!') @task
def run_task(): #安装
with cd('/tmp/install'):
run('tar -zxvf lnmp.tar.gz')
with cd('lnmp/'): #使用with继承/tmp/install目录位置状态
run('./centos.sh') @task
def go(): #上传、安装组合命令
put_task()
run_task()
febric的使用的更多相关文章
- Azure Service Febric 笔记:Web API应用
1.什么是Service Febric 贴一段微软官方的介绍 Service Fabric 是一种分布式系统平台,可让你轻松打包.部署和管理可缩放.可靠的微服务.Service Fabric 还解决了 ...
- 常用数据库高可用和分区解决方案(1) — MySQL篇
在本文中我们将会讨论MySQL.Oracle.MongoDB.Redis以及Oceanbase数据库,大家可能会奇怪为什么看不到有名关系型数据库MSSQL.DB2或者有名NoSQL数据库Hbase.L ...
- 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- 003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- 大厂0距离:网易 Linux 运维工程师面试真题,内含答案
作为 Linux 运维工程师,进入大公司是开启职业新起点的关键,今天马哥 linux 运维及云计算智囊团的小伙伴特别分享了其在网易面试 Linux 运维及云计算工程师的题目和经历,希望对广大 Linu ...
随机推荐
- unicode 格式 转汉字
function decodeUnicode($str){ return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', create_function( ...
- GB18030 字符集
gb18030 编辑 国家标准GB18030-2005<信息技术 中文编码字符集>是我国继GB2312-1980和GB13000.1-1993之后最重要的汉字编码标准,是我国计算机系统必须 ...
- Python--字典的一些用法dict.items()
1.dict.items() 例子1: 以列表返回可遍历的(键, 值) 元组数组. dict = {'Name': 'Runoob', 'Age': 7} print ("Value : % ...
- 控制层解析post请求中json数据的时候,有些属性值为空
原因: 1.默认json数据解析的时候,值会赋给键的首字母是小写的封装的bean中的属性,如果没有首字母小写的属性,也不会报错.即bean中有getXXX方法时,从json到model会增加xxx属性 ...
- asp.net core-9.依赖注入的使用
http://www.jessetalk.cn/2017/11/06/di-in-aspnetcore/
- 2019杭电多校一 K. Function (数论)
大意: 给定$n(n\le 10^{21})$, 求$\sum\limits_{i=1}^n gcd(\lfloor\sqrt[3]{i}\rfloor,i)\mod 998244353$ 首先立方根 ...
- hdu 4333 扩展kmp+kmp重复字串去重
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4333 关于kmp next数组求最短重复字串问题请看:http://www.cnblogs.com/z ...
- 通过DBCC Page查看在SQL Server中哪行数据被锁住了?
原文:通过DBCC Page查看在SQL Server中哪行数据被锁住了? 如何查看被锁的是哪行数据?通过dbcc page可以. 要想明白这个问题: 首先,需要模拟阻塞问题,这里直接模拟了阻塞问题的 ...
- OutOfRangeError的解决办法
自制TFRecord数据集,训练神经网络出现的一个问题,及解决办法. 错误现象: 数据训练完成后,测试数据集正确率时,运行mnist_test.py文件,出现错误代码 问题分析:显示需测试数据10 ...
- VBA宏注释(四)
注释用于记录程序逻辑和用户信息,其他程序员将来可以阅读并理解相同的代码无缝工作. 它包括由开发者,修改者以及还可以包括合并逻辑的信息. 解释器在执行时忽略注释. VBA中的注释用两种方法表示,它们分别 ...