Python的批量远程管理和部署工具Fabric用法实例
作者:shichen2014 时间:2022-01-06 08:28:30
本文实例讲述了Python的批量远程管理和部署工具Fabric用法。分享给大家供大家参考。具体如下:
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文件.
如果需要并行执行的话,也可以传递参数如fab -P -z 15 pull, 15表示并行执行的PC数量.
以上,只是一些简单的用法,如果需要更高级的用法,可以关注该项目的github主页 https://github.com/fabric/fabric.
希望本文所述对大家的Python程序设计有所帮助。
标签:Python,工具
0
投稿
猜你喜欢
用自定义html标签让IE支持html5新增元素
2011-03-17 16:10:00
UI自动化定位常用实现方法代码示例
2022-09-22 09:47:13
Django渲染Markdown文章目录的方法示例
2021-03-31 05:12:07
微信跳一跳python辅助脚本(总结)
2023-01-04 00:56:23
小程序实现授权登陆的解决方案
2024-04-17 10:03:28
Golang中omitempty关键字的具体实现
2024-04-25 15:12:55
PHP实现web socket长链接流程详解
2023-05-27 23:44:39
Django读取Mysql数据并显示在前端的实例
2023-11-09 17:36:49
详解Python开发语言中的基本数据类型
2022-12-11 20:13:35
python 如何引入协程和原理分析
2022-09-06 11:26:07
PHP获取一个字符串中间一部分字符的方法
2024-03-08 20:17:39
PYTHON 中使用 GLOBAL引发的一系列问题
2023-07-08 16:24:21
Python中的type与isinstance的区别详解
2021-12-06 19:30:57
90行Python代码开发个人云盘应用
2021-12-17 13:44:12
Golang验证器之validator是使用详解
2024-01-29 23:40:28
Python3运算符常见用法分析
2023-07-29 07:18:39
oracle误删数据表还原的二种方法(oracle还原)
2024-01-14 21:33:55
用 Python 制作地球仪的方法
2022-11-10 19:10:36
python实现一次性封装多条sql语句(begin end)
2022-09-27 13:20:34
PHP析构函数destruct与垃圾回收机制的讲解
2023-07-11 21:05:36