美文网首页
fabric2 没有fabric.api

fabric2 没有fabric.api

作者: 瀚海银月 | 来源:发表于2020-02-05 22:58 被阅读0次

python三大神器之fabric(2.0新特性)

转载地址

fabric经常出现在自动化运维领域,批量处理一些运维工作。fabric是在paramiko之上又封装了一层,操作起来更加简单易用。

本来只是想写个博客记录一下,然后发现之前写的代码不能运行了,报以下错误:

Traceback (most recent call last):
File "D:/PycharmProjects/TestTool/Publish/fabric_sample.py", line 3, in <module>
from fabric.api import * ModuleNotFoundError: No module named 'fabric.api'

然后百度了下,说是2.0以上的fabric版本已经移除了fabric.api,解决方法是指定安装2.0以下的版本,比如pip install fabric==1.14.0 ,但都并没有介绍新的特性。然后去官网看了下文档,使用方法如下:

1.连接服务器

通过fabric.Connection方法连接服务器:

  conn = fabric.Connection(host , user = 'root',port = 22, config = None, geteway = None, connect_kwargs={"password": "123456"})

Connection参数的含义:

  def __init__(
    self,
    host, #主机ip
    user=None,                  #用户名
    port=None,                  #ssh端口,默认是22
    config=None,                #登录配置文件
    gateway=None,               #连接网关
    forward_agent=None,         #是否开启agent forwarding
    connect_timeout=None,       #设置超时
    connect_kwargs=None,        #设置 密码登录connect_kwargs={"password": "123456"}) 还是 密钥登录connect_kwargs={"key_filename": "/home/myuser/.ssh/private.key"}
    inline_ssh_env=None,      
    )

2.通过fabric安装软件

下面通过一段代码实现在Ubuntu上批量安装docker,顺序取走列表中的ip。

import fabric 
def docker_install(): 
    for host in ['10.1.4.24', '10.1.15.154', '10.1.14.106']:
        conn = fabric.Connection(host , user = 'root', connect_kwargs={"password": "123456"}) 
        print("%s:" % host)
        conn.run("echo Y|apt-get remove docker.io")
docker_install()

是不是很简单,几行代码就解决了~

conn获取Connetction对象后,有很多属性方法可以使用,介绍下几个常用的:

 cd: #切换远程目录,如:cd('/root');   with conn.cd('/root'):继承这个状态
 put: #上传本地文件到远程主机,如:put('/root/test.py','/root/test.py')
 get: #获取服务器上文件,如:get('/root/project/test.log')
 sudo: #sudo方式执行远程命令,如:sudo('service docker start')

全部属性:

['cd', 'clear', 'client', 'close', 'config', 'connect_kwargs', 'connect_timeout', 'create_session', 'cwd', 'derive_shorthand', 'forward_agent', 'forward_local', 'forward_remote', 'from_data', 'from_v1', 'gateway', 'get', 'get_gateway', 'host', 'is_connected', 'local', 'open', 'open_gateway', 'original_host', 'pop', 'popitem', 'port', 'prefix', 'put', 'resolve_connect_kwargs', 'run', 'setdefault', 'sftp', 'ssh_config', 'sudo', 'transport', 'update', 'user']

调用本地命令:

import invoke
invoke.run('uname -a')

相关文章

  • fabric2 没有fabric.api

    python三大神器之fabric(2.0新特性) 转载地址 fabric经常出现在自动化运维领域,批量处理一些运...

  • fabric的扩展使用

    先看一下fabri的帮助文档: 平时用的最多的就是fabric.api中的方法,比如:from fabric.ap...

  • Hyperledger Fabric2.x Docker镜像编译

    一、问题描述 最近工作需要对fabric2的源码进行改造,每次改完想要部署测试的时候,make docker这个命...

  • 没有,没有

    早上的天空没有 星星盼着月亮 烧红的云朵 没有温度 我家的炉子也没有 午后的太阳没有 小木窗拒绝了光 黑色的眼睛 ...

  • 没有,没有

    我们的大脑究竟有哪些未被认知的功能呢? 没有,没有,这四个字是昨天晚上的听到自己的大脑直接发出的声音。...

  • 没有,没有

    没房,没钱,没地位 没你,没我,没朋友 没爱,没情,没兴趣 没声,没响,没个性 夜幕又笼罩在这里 乌鸦的谎言成了真...

  • 没有没有就没有

    男子三十五了,有人给他介绍了个女朋友,女朋友人长的好,家是偏远农村条件不高。 "人家开汽车我不要,你就给我买辆电动...

  • 没有,就是没有

    “还记得你说世界美好事情真的特别多,只是很容易擦肩而过。” ————《吟游诗人》 柚子很喜欢带相...

  • 没有便没有

    我只是想要有一个人能够把我捧在手心里,可是都是我把你捧在手心里。 从来都不是你付出的越多,他就会越感激。只有...

  • 没有了没有

    七月,暑假来临了。每个人早早地做好了打算,假期不想碌碌无为,提前找好了辅导班,提前计划着计划,而我也不例外,今年暑...

网友评论

      本文标题:fabric2 没有fabric.api

      本文链接:https://www.haomeiwen.com/subject/ohasxhtx.html