fabric --- Python中的批量远程管理和部署工具

Fabric是Python中一个非常强大的批量远程管理和部署工具,常用于在多个远程PC上批量执行SSH任务.

常见的使用方法大概总结如下:

1, 首先,要将批量执行的任务写入到一个fabfile.py中,

# -*- coding:utf-8 -*-

from fabric.api import run, local, roles, env, cd
env.hosts=[
    '192.168.1.110',
    '192.168.1.111',
    '192.168.1.112'
]
env.user="username"
env.password="password"
env.port=22
#env.parallel=True
#env.skip_bad_hosts=True
#env.timeout=1
#env.warn_only=True

# local用于在本地PC执行命令.
# run用于在远程PC执行命令.
def ls():
    with cd('/home/workspace/project'):
        local('touch 1.log')
    with cd('/home/workspace/project2'):
        local('touch 2.log') 

#@parallel, 可以设置是否并行执行
#@serial
def pull():
    with cd('/home/workspace/project'):
        run('git pull')

def clean():
    with cd('/home/workspace/project'):
        run('bash clean.sh')

@hosts('192.168.1.113')
def robot(device):
    with cd('/home/workspace/project'):
        run('bash run.sh %s robot && sleep 1' % device)

以上就是一个简单的fabfile.py, 其中定义的函数均对应一个fab中的可执行命令.

其中有两个小的注意事项,

A,在远程机器的run.sh中如果要执行一些非系统常见的工具,最好指定为绝对路径. 且可以适当地使用nohup的方式.

B,执行其他脚本或者命令后最好加上sleep,以防止Fabric过早地关闭与远程PC连接的session,而导致执行任务失败.

2, 执行过程: fabric执行会默认选取当前目录下的fabfile.py文件,

fab clean

fab pull

fab robot:hosts="192.168.1.115",device=5560

可以通过hosts参数给fabric传入指定的远程PC, 该hosts参数的优先级比env.hosts的要高.

也可以给fab中的命令传递参数,如device.

此外,还可以通过fab -f otherFabFile.py clean来指定其他的fabric文件.

以上,只是一些简单的用法,如果需要更高级的用法,可以关注该项目的github主页 https://github.com/fabric/fabric.

时间: 2024-10-14 04:52:12

fabric --- Python中的批量远程管理和部署工具的相关文章

[转帖]Ansible批量远程管理Windows主机(部署与配置)

2018-09-12 12:04:42 https://blog.51cto.com/7424593/2174156 一.测试环境介绍 Ansible管理主机: 系统:   CentOS6.8 IP Addr: 172.16.10.22 Linux管理服务器需安装pip.pywinrm插件 Windows客户端主机: 系统:   Server2008R2 SP1 IP Addr: 172.16.10.23 Windows机器需要安装或升级powershell4.0以上版本,Server2008R

python之实现批量远程执行命令(堡垒机)

python远程批量执行 我并不是一个专业的开发,我一直在学习linux运维,对于python也是接触不久,所以代码写的并不是很规范简洁. 前段时间一个同学找我一起做一个自动化运维平台,我对python的django还没有了解,并且对于HTML和JS这类开发学习还没有涉及,所以我说我做些后台的实现,前端就交给我的同学做.不扯淡了,下面说下我做批量执行的思路. 用到的模块:paramiko 功能:很简单就是批量执行命令,类似于ansible,本来想用Fabric,但是想一想还是用paramiko,

使用python编写的简单远程管理软件

因为用户可以选择是否同意被控制,所以并不算是木马. 使用python3.7,spyder,在windows 10 开发. client为控制端,server为被控端. 参考 mygithub https://github.com/TouwaErioH/simple-trojan 原文地址:https://www.cnblogs.com/lqerio/p/11087367.html

【python】PIL 批量绘制图片矩形框工具

工具采用PIL:Python Imaging Library,图像处理标准库.PIL功能非常强大,但API却非常简单易用. 安装PIL 在Debian/Ubuntu Linux下直接通过apt安装 $ sudo apt-get install python-imaging Windows平台直接通过pip安装 pip install pillow 批量工具脚本 默认执行方式为:              执行脚本命令 python drawline.py           1.获取当前路径下的

Python中最好用的命令行解析工具:argparse

Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解析的模块来帮你做这个苦力活. Python 本身就提供了三个命令行参数解析模块,我这里罗列一下它们的大致情况供你了解. getopt,只能简单的处理命令行参数 optparse,功能强大,易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明.(Python2.7以后弃用,不会继

批量远程桌面工具的使用趋势

远程桌面连接现在已经成为了企业运营和处理业务不可缺少的渠道,处于信息技术飞速发展的时期,计算机网络在企业单位中起到了非常大的作用,但是网络安全问题对于企业单位来说不容小觑,所以使用远程桌面连接软件监管员工,可以很好的消除网络安全隐患.批量远程桌面连接管理控制工具推荐:IIS7远程桌面管理(http://yczm.iis7.com/?lxmd) 一.可以用来干什么? 1.远程维护 计算机系统技术服务工程师或管理人员通过远程控制目标维护计算机或所需维护管理的网络系统,进行配置.安装.维护.监控与管理

BOS项目 第10天(activiti工作流第二天,流程变量、组任务、排他网关、spring整合activiti、项目中实现流程定义管理)

BOS项目笔记 第10天 今天内容安排: 1.流程变量(设置.获取) 2.组任务(候选人.候选组) 3.排他网关使用 4.spring整合activiti 5.将activiti应用到bos项目中 6.在bos项目中实现流程定义管理(部署.查询.查看png.删除) 1. 流程变量 1.1 设置流程变量的方式 l 方式一:启动流程实例时设置 l 方式二:办理任务时设置 l 方式三:使用RuntimeService的set方法设置 l 方式四:使用TaskService的set方法设置 注意:如果设

Python中生成器,迭代器,以及一些常用的内置函数.

知识点总结 生成器 生成器的本质就是迭代器. 迭代器:Python中提供的已经写好的工具或者通过数据转化得来的. 生成器:需要我们自己用Python代码构建的 创建生成器的三种方法: 通过生成器函数 通过生成器推导式 python内置函数或者模块提供 生成器函数 yield:一个yield对应一个next,next超过yield数量,就会报错,与迭代器一样. yield与return的区别: return一般在函数中只设置一个,他的作用是终止函数,并传给函数的执行者返回值 yield在生成器中可

python实现主机批量管理

在日常的运维工作中批量对主机的是很常见的,市面上也有许多主机批量管理的软件,但有时候这些软件并不能完全的满足我们的需求.python中刚好提供了关于主机批量管理的模块,今天就让我们来看看如何利用python实现主机批量管理 python提供主机批量管理的模块主要有三个paramiko.fabric与pexpect,今天我们主要说的是paramiko模块,paramiko模块是第三方模块 安装:pip install paramiko或者yum install python-paramiko如果都