zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

Python实例批量工具部署 Fabric 用法 远程管理
2023-06-13 09:15:41 时间

本文实例讲述了Python的批量远程管理和部署工具Fabric用法。分享给大家供大家参考。具体如下:

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

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

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

复制代码代码如下:
#-*-coding:utf-8-*- 
 
fromfabric.apiimportrun,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执行命令. 
defls(): 
   withcd("/home/workspace/project"): 
       local("touch1.log") 
   withcd("/home/workspace/project2"): 
       local("touch2.log")  
 
#@parallel,可以设置是否并行执行 
#@serial 
defpull(): 
   withcd("/home/workspace/project"): 
       run("gitpull") 
 
defclean(): 
   withcd("/home/workspace/project"): 
       run("bashclean.sh") 
 
@hosts("192.168.1.113") 
defrobot(device): 
   withcd("/home/workspace/project"): 
       run("bashrun.sh%srobot&&sleep1"%device)

以上就是一个简单的fabfile.py,其中定义的函数均对应一个fab中的可执行命令.
其中有两个小的注意事项:

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

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

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

复制代码代码如下:
fabclean
fabpull
fabrobot:hosts="192.168.1.115",device=5560

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

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

此外,还可以通过fab-fotherFabFile.pyclean来指定其他的fabric文件.

如果需要并行执行的话,也可以传递参数如fab-P-z15pull,15表示并行执行的PC数量.

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

希望本文所述对大家的Python程序设计有所帮助。