您好,欢迎访问一九零五行业门户网

Python的批量远程管理和部署工具Fabric用法实例

本文实例讲述了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程序设计有所帮助。
其它类似信息

推荐信息