zoukankan      html  css  js  c++  java
  • python fabric的安装与使用

    背景:fabric主要执行远程的shell命令,包括文件的上传、下载,以及提示用户输入等辅助其它功能。

    测试系统:ubuntu16

    要求:python    //系统有自带,ubuntu16 通常自带python2.7.5

    一、安装fabric

      1、安装fabric

    $ sudo apt-get install python-pip
    
    $ sudo pip install --upgrade pip                            //升级pip
    
    $ sudo pip install fabric

      2、查看安装结果

    $ which fab

    二、fabric的使用

      1、编写hello脚本: vim /tmp/fab/hello.py

      1.1 脚本内容

    #!/usr/bin/env python
    
    def hello():
    print(
    "Hello world!")

      1.2 运行文件及输出结果

    $ fab -f hello.py hello
    
    ----------------------------------------->
    
    Hello world!
    
    Done.

      2、参数传递:vim /tmp/fab/test1.py

      2.1 脚本内容

    #!/usr/bin/env python
    
    def hello(name):
    
            print('Hello %s!' % name)

      2.2 运行文件及输出结果

    $ fab -f test01.py hello:jeff

    -------------------------------------->
    Hello jeff
    ! Done.

      3、本地操作

      3.1 vim /tmp/fab/lslocal.py

    #!/usr/bin/env python
    
    from fabric.api import local
    
    def lslocal():
            local('cd /usr/local')
            local('ls')

      3.2 运行文件及输出结果

    $ fab -f local.py lslocal
    [localhost] local: cd
    /usr/local && ls
    bin etc games include lib man sbin share src Done.

      4、远程操作

      4.1 脚本内容

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from fabric.api import *
    
    env.roledef = {
            'server1': ['root@172.16.1.201:22',],
            'server2': ['zun1@172.16.1.206:22',]
    }
    env.password = '123456'
    
    @roles('server1')
    def task1():
            run('cd /usr/local && ls')
    
    @roles('server2')
    def task2():
      with cd('/home/zun1'):          //with的作用在于让后面的表达式语句继承当前的状态 run('
    ls')               // 以实现 “ls /home/zun1” 的效果 def test(): execute(task1) execute(task2)

      4.2 运行文件及输出结果

    $ fab -f test01.py test
    
    ------------------------------------------------------------------------------------>
    
    [root@172.16.1.201:22] Executing task 'task1'
    [root@172.16.1.201:22] run: cd /usr/local && ls
    [root@172.16.1.201:22] out: bin  etc  games  include  lib  lib64  libexec  sbin  share  src
    [root@172.16.1.201:22] out: 
    
    [zun1@172.16.1.206:22] Executing task 'task2'
    [zun1@172.16.1.206:22] run: cd /home/zun1 && ls
    [zun1@172.16.1.206:22] out: test_fabric  walle-web.vendor.tgz
    [zun1@172.16.1.206:22] out: 
    
    
    Done.
    Disconnecting from root@172.16.1.201... done.
    Disconnecting from 172.16.1.206... done.

    以上只对fabric做个大概演示,如想深入研究,可查看 官网教程

      

  • 相关阅读:
    MySQL Explain优化
    mysql联合索引
    MySQL索引类型
    php常用的排序算法与二分法查找
    mysql 主从复制(mysql双机热备的实现)
    mysql 主从复制 (2)
    Linux 查看进程之PS命令
    PHP isset 和 array_key_exists 对比
    Linux md5sum 的用法
    Linux Sphinx 安装与使用
  • 原文地址:https://www.cnblogs.com/jefflee168/p/7249382.html
Copyright © 2011-2022 走看看