• python模块,自动化模块fabric2


    一、fabric2 模块使用

    1)fabric2 介绍

    fabric2 是python的一个库,同时也是命令行工具,使用 fabric2 模块,可以方便的执行应用部署和系统管理等操作
    fabric2 依赖于paramiko 进行ssh 交互,fabric2的设计思路是通过几个API接口来完成所有的部署

    pip install fabric2  -i "https://pypi.doubanio.com/simple/"

    2)fabric2  的简单使用

    from fabric2 import Connection
    
    
    def deploy():
        # 如果服务器配置了ssh免密码登录,就不需要 connect_kwargs 来指定密码
        conn = Connection("root@192.168.44.13", connect_kwargs={"password": "123456"})
        conn.run("ls")
    
        with conn.cd('/home'):
            conn.run("mkdir testdir")
        with conn.cd('/home/testdir'):
            conn.run('mkdir aaa')
            conn.put('test', '/home/testdir')  # 上传文件
    
    
    if __name__ == '__main__':
        deploy()

     3)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/id_rsa"}
            inline_ssh_env=None,
        )

     4)conn对象属性

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

    二、 fabric2对多台机器使用

    1)对多台机器使用时,Connection 

    from fabric2 import Connection
    
    for host in ('root@192.168.44.20','root@192.168.44.21','root@192.168.44.22'):
        result = Connection(host,connect_kwargs={'password':'123456'}).run('uname -s')
        print("{}: {}".format(host,result.stdout.strip()))

    输出结果

    Linux
    root@192.168.44.20: Linux
    Linux
    root@192.168.44.21: Linux
    Linux
    root@192.168.44.22: Linux

     2)对多台机器使用时,SerialGroup

    from fabric2 import SerialGroup
    
    pool = SerialGroup('root@192.168.44.20','root@192.168.44.21','root@192.168.44.22',connect_kwargs={'password':'123456'})
    print(pool)
    pool.run('uname -s')
    for conn in pool:
        conn.run('mkdir testfiles')

     3)扩展,运行本地命令

    import invoke
    
    invoke.run('ls')
  • 相关阅读:
    ASP.NET ValidationGroup 属性和CssClass 属性
    sql 在将 nvarchar 值 转换成数据类型 int 时失败。
    select 1 from table
    OLEDB和ODBC的区别
    ASP.NET 读数据库绑定到 TreeView 递归方式
    用python做网页抓取与解析入门笔记[zz]
    win8.1安装驱动出现“文件的哈希值不在指定的目录”的解决办法[zz]
    Linux磁盘IO监控[zz]
    硬盘内部硬件结构和工作原理详解[zz]
    fcitx五笔的安装[zz]
  • 原文地址:https://www.cnblogs.com/linu/p/12006232.html
Copyright © 2020-2023  润新知