Python 3 Fabric 2 简单使用

环境&组件说明

操作系统:CentOS Linux release 7.8.2003 (Core)
Python 版本:3.8.5
pip 版本:20.2.2
Fabric 版本: 2.5.0
virtualenv 版本:20.0.31

参考

Python安装、虚拟环境安装。推荐安装虚拟环境,也可以不安装,看是否需要。

官方网站,官网文档只有 Fabric 1 和 2 , 居然没有 3 ? 因为 3 不是官方版本,不推荐!没找到相关的专门文档说明,如果想使用的话,可以参考 Fabric 1 的相关文档,因为就是是一个基于Fabric 1.x 的fork,兼容Python2 & Python3,兼容 Fabric1.x 的 fabfile。

Fabric 中文文档,中文版 没有版本信息。根据测试结果看应该是 Fabric 1 ,与 Fabric 2 存在兼容问题。

Fabric 2 安装及使用

安装

需要先安装 Python 3.8.5 ,CentOS 7 默认的是 Python 2 。推荐安装 Python 3 , 安装方法可以 参考
Python 3.8.5 默认安装的版本为 Fabric 2.5.0,命令如下

pip install fabric

查看版本及验证是否安装成功

fab -V

安装成功显示如下信息

Fabric 2.5.0
Paramiko 2.7.2
Invoke 1.4.1

查看帮助

fab -h

使用

PS : 这种方式可以最快的体验 Fabric , 但是不安全,因为密码直接写在 code 里面。 安全的方法请参考官网 Authentication 部分,比较推荐的两种方式:手动输入密码、密钥。

文件名 fabfile.py

代码内容如下

# -*- coding: utf-8 -*-
# file name : fabfile.py
# commond : fab helloWold
# required : Python 2.7.5 、 Fabric 2.5.0


from fabric import task, Connection


# local
@task
def helloWorld(c):
    print("Hello World !")
    c.run("whoami")
    # CentOS 7 command
    c.run("/usr/sbin/ip add")


# remote
@task
def remoteTest(c):
    for host in ['192.1.1.10']:
        conn = Connection(host, user='root', connect_kwargs={"password": "123456"})
        print("%s:" % host)
        # CentOS 6 command
        conn.run("/sbin/ip add")

列出可用的 task,列出的是当前目录下 fabfile.py 文件中的 task

fab -l

查看结果如下(这里需要留意,代码中 task 函数名中的 _ ,会被转为 - ,使用的时候需要按照 fab -l 中列出的名字使用,否则会提示找不到。提示信息例如 : No idea what ‘test’ is! )

Available tasks:

  helloWorld
  remoteTest

运行函数测试

fab helloWorld
fab remoteTest

测试结果是代码中 conn.run 中的命令运行的结果。这里用了 ip add 是为了验证命令运行在不同的服务器上。

其他命令

安装失败,或者需要安装其他版本。需要先卸载历史版本。

# 卸载历史版本
pip uninstall fabric

尾声

感觉 Fabric 作为 Python 的3大神器,非常好用! 不过文档不全面导致学习及使用成本比较高。而且看 GIT 提交记录,最新的版本2.5.0发布时间为2019年8月7日,而2019年一年只发布了这一个版本,已经没有之前那么活跃了,现在是2020年9月23日,已经1年没更新出版本了。真希望贡献者可以坚持下去吖~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值