打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用Python Fabric实现Linux自动化操作
userphoto

2023.11.12 浙江

关注
IT民工10101000
2020-1-12 07:54

最近打算使用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是我定义的主机列表

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python fabric实现远程操作和部署
使用Fabric自动化你的任务
写好DevOps的文档
如何在Linux中安装Python3.6版本
Fabric动态生成主机列表和角色列表
ROS2性能分析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服