zoukankan      html  css  js  c++  java
  • 批量执行命令:fabric

    Fabric 可以通过 SSH 在多台客户端主机上批量执行任务,是基于 paramiko 封装开发的,paramiko 更底层一些,安装方法如下:

    [root@localhost ~]$ yum install -y gcc python-pip python-devel     # 安装基础软件包
    [root@localhost ~]$ pip install pycrypto==2.3       # 安装 paramiko 的依赖包,paramiko 使用 ssh 登录需要用到 pycrypto 来提供加密算法,保证 ssh 安全性
    [root@localhost ~]$ pip install paramiko==1.12.4    # 安装 Fabric 的依赖包,Fabric 是基于 paramiko 封装的
    [root@localhost ~]$ pip install fabric==1.8.3       # 最后安装 Fabric,安装之后会提供 fab 命令,也会提供很多 Fabric 的 API


    Fabric 简单用法:

    [root@localhost ~]$ cat fabfile.py     # 需要定义一个fabfile.py文件,文件名是固定的
    
    from fabric.api import run # 使用Fabric提供的API,run用来远程执行命令 def getHostname(): # 定义一个函数,用来获取主机名 run('hostname')
    [root@localhost ~]$ fab -H 192.168.216.130 getHostname    # 通过 fab 命令来调用 fabfile.py 文件
    [192.168.216.130] Executing task 'getHostname'            # -H 192.168.216.130 用于指定对哪个远程主机进行操作
    [192.168.216.130] run: hostname                           # getHostname 表示执行 fabfile.py 文件里的哪个函数
    [192.168.216.130] out: localhost.localdomain              # 注意:使用 Fabric 的前提是保证 ssh 可以通过密钥登录
    [192.168.216.130] out: Done.
    Disconnecting from 192.168.216.130... done.


    Fabric 使用环境变量:

    [root@localhost ~]$ cat fabfile.py    # 可以在 fabfile.py 里通过 env 自定义环境变量
                                          # 这些环境变量的变量名是固定的,使用 fab 命令去执行的时候会自动读取这些环境变量
    from fabric.api import run, env       
    
    env.hosts = ['192.168.216.130', '192.168.216.131']    # 定义要操作的远程主机  
    env.user = 'root'                                     # 定义使用哪个用户登录远程主机
    
    def getHostname():
        run('hostname')
    [root@localhost ~]$ fab getHostname
    [192.168.216.130] Executing task 'getHostname'
    [192.168.216.130] run: hostname
    [192.168.216.130] out: localhost.localdomain
    [192.168.216.130] out: 
    
    [192.168.216.131] Executing task 'getHostname'
    [192.168.216.131] run: hostname
    [192.168.216.131] out: localhost.localdomain
    [192.168.216.131] out: 
    
    Done.
    Disconnecting from 192.168.216.131... done.
    Disconnecting from 192.168.216.130... done.


    Fabric 常用环境变量:

    env.hosts            # 定义目标主机
    env.exclude_hosts    # 排除指定主机
    env.user             # 定义用户名
    env.port             # 定义端口,默认为 22
    env.password         # 定义密码
    env.roledefs         # 定义角色


    Fabric 常用 API:

    run      # 远程执行命令,如 run('hostname')
    env      # 用于定义内置属性,如 env.hosts = ['ip1', 'ip2', 'ip3', ...]
    put      # 上传本地文件到远程主机,如 put('/etc/passwd', '/tmp/passwd')
    get      # 从远程主机下载文件到本地,如 get('/etc/passwd', '/tmp/passwd')
    prompt   # 获得用户输入信息,如 prompt('please input user password: ')
    confirm  # 获得提示信息确认,如 confirm('Test failed, Continue[Y/N]: ')


    fab 命令:

    -H    # 指定对哪台远程主机进行操作,如果有多台用逗号隔开
    -R    # 指定对哪种角色的主机进行操作,角色需要在fabfile.py文件中自定义
    -f    # 指定fab入口文件,默认入口文件名为fabfile.py
    -t    # 指定连接到远程主机的超时时间
    -T    # 指定连接到远程主机后命令执行的超时时间

     
    扩展:Fabric 打印颜色

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    from fabric.colors import *
    
    print red('Hello World')
    print blue('Hello World')
    print cyan('Hello World')
    print white('Hello World')
    print green('Hello World')
    print yellow('Hello World')
    print magenta('Hello World')
    print magenta('Hello World', bold=True)

         

  • 相关阅读:
    Linux基础--安装搭建tomcat+java+mysql
    使用ArcGIS JavaScript API 3.18 加载天地图
    关于ArcGIS的Web 3D GIS问答
    ArcGIS 10.5新功能预览
    如何选择合适分辨率的遥感影像
    如何正确响应ArcGIS JavaScript API中图形的鼠标事件
    安装Portal for ArcGIS时如何正确配置HTTPS证书
    ArcGIS地图文档优化 mxdPerfstat工具使用体验
    Web AppBuilder Widget使用共享类库的方式
    如何通过ArcMap Add-in机制实现十字叉线地理配准工具
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10357226.html
Copyright © 2011-2022 走看看