最近打算使用Python实现linux自动化执行Shell命令,于是研究了一下Facbic库,Fabric是一个Python的库,提供了丰富的同SSH交互的接口,可以用来在本地或远程机器上自动化、流水化地执行Shell命令 。非常适合用来做应用的远程部署及系统维护 。简单易用,只需懂得基本的Shell命令 。

文章插图
fabric帮助网站
目前,从PyPI可以搜索到主要的fabric库为“ Fabric 2.5.0 ”、“ fabric3 3.1.14 ”和“ Fabric2 2.5.0 ” 。
- Fabric:官方Fabric,兼容 Python 2 & Python 3,但不兼容Fabric 1.x的fabfile;
- Fabric2: 与Fabric相同,仅作为平滑迁移(使用Fabric包安装1.x 版本,使用Fabric2包安装2.x版本,来实现1.x和2.x的共存);
- Fabric3:是一个基于Fabric 1.x 的fork,兼容Python2 & Python3,兼容 Fabric1.x 的 fabfile;

文章插图
从pypi网站可以搜索到最新的fabric版本
Fabric 1.x 与2.x版本的主要区别:
- Fabric 1.x只支持Python2.5-2.7,而Fabric2支持Python (2.7, 3.4+);
- Fabric 2.x是重写Fabric 1.x的版本,不再兼容1.x 版本的fabfile,而且有些模块和用法也发生了很大改变;
1 - 导入fabric.api提示报错“No module named api”
1 >>> from fabric.api import run2Traceback (most recent call last):3 File "", line 1, in 4ImportError: No module named api5 >>>
处理方法:
确认fabric版本信息,“from fabric.api import run”的方式只适用fabric1.x版本 。
2 - 运行fabric示例提示报错“No idea what 'hello' is!”
1$ cat fabfile.py 2# coding:utf-8 3 4 5def hello(): 6print("hello fabric!") 7 8$ fab hello 9 No idea what 'hello'is!1011 $ fab --list12 No tasks found in collection 'fabfile'!
处理方法:
确认fabric版本信息,fabric2.x版本不兼容Fabric 1.x的fabfile 。遵照fabric 2.x要求,更改fabfile文件内容格式,重新运行即可 。
具体信息可查看:http://docs.fabfile.org/en/2.1/getting-started.html#addendum-the-fab-command-line-tool
下面是我在centos7下面安装Python2.7+Fabric 。

文章插图
fabric的脚本目录fabfile.py为脚本,fab.conf是我定义的主机列表

文章插图

文章插图

文章插图

文章插图

文章插图
【使用Python+Fabric实现Linux自动化操作】
推荐阅读
- 什么是链路追踪?分布式系统如何实现链路追踪?
- 硬盘变RAW了怎么办?
- 高级语言中的语句在汇编中是如何实现的
- WSL2 中使用 systemctl 命令
- 交管12123使用时间段是多久?
- 逾期很久的信用卡还清了还能继续用吗? 逾期过后的信用卡还清后还可以使用么
- 如何实现HTTPS服务器
- 使用 UEFI 双启动 Windows 和 Linux
- 使用python爬取抖音app视频
- 一道头条面试题:如何实现 LRU 原理?
