使用Python+Fabric实现Linux自动化操作

liftword5个月前 (01-21)技术文章41

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



目前,从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;


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。







相关文章

怎么在linux上运行python(linux运行python命令)

Linux默认是已经安装好了Python程序目前来说,大多数的Linux发行版是安装了两个版本的Python程序一个是Python 2.x一个是Python 3.x一些系统自带的程序文件需要Pytho...

运维必备!用Python管理多个Linux服务器的连接与命令执行

引言:代码实现多个Linux服务器的SSH连接,支持添加、删除连接,执行命令,并返回标准输出。可以在需要时批量处理多个服务器,避免了手动逐个登录和执行命令的繁琐过程。代码封装如下:# -*- codi...

【Python程序开发系列】如何让python脚本一直在后台保持运行

这是我的第385篇原创文章。一、引言让 Python 脚本在后台持续运行,有几种常见的方式,具体方式可以根据你的系统环境和需求选择。二、Linux 或 macOS 系统2.1 使用 nohup命令no...

如何在Linux系统中搭建Python编程环境

在大多数的Linux系统中,基本上都默认安装了Python,也就是说,在Linux的系统中基本上是不需要安装什么软件,就可以使用Python。下面以ubuntu操作系统为例,看看如何在Linux操作系...

加速 Python 程序的 10 个技巧(python加快运算速度)

有很多方法可以提高 Python 应用程序的性能。以下是加快 Python 速度的 10 个硬核编码技巧。总的来说,人们使用 Python 是因为它方便且对程序员友好,而不是因为它快速。大量的第三方库...

Linux系统升级Python版本的编程实践

摘要:Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库, 广泛应用于系统管理任务的处理和Web编程。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。其特点...