文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python学习之认识fabric

2023-01-31 06:53

关注

fabric是啥?

Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.

这东西在批量化处理一些远程命令、任务,比较方便,稍微会点python(他是一个python库么,而且一般任务都写成pyton函数的形式)就可以上手,比较简单。


一、安装python

yum -y install zlib openssl-devel    ## (不执行有可能在安装pip时候报错)
wget --no-check-certificate 
tar xf Python-2.7.8.tar.xz  
cd Python-2.7.8
./configure --prefix=/usr/local/python
vim Modules/Setup
##找到下面这句,去掉注释#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz   否则安装pip时候报错
make
make altinstall
ln -s /usr/local/python/bin/python2.7 /usr/local/bin/python

二、安装pip

pip和easy_install类似是一个安装和管理python包的工具.

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
python get-pip.py
ln -fs /usr/local/python/bin/pip /usr/bin/pip


三、安装fabric

pip install fabric
ln -fs /usr/local/python2.7/bin/fab /usr/bin/fab
测试:
[eric@localhost ~]$ python
Python 2.7.8 (default, May 11 2015, 01:43:48) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import fabric


四、fabric使用实例

1、http://docs.fabfile.org/en/1.10/tutorial.html

2、批量做免密登录的一个例子fabfile.py:

#!/usr/bin/env python
# -- encoding: utf-8 --

from fabric.api import local, cd, run, env
from fabric.colors import red, green
from fabric.context_managers import cd
from fabric.operations import *
from fabric.api import *

env.roledefs = {
    'localhost':['localhost'],
    'vacproxy':['xx.xx.xx.xx','xx.x.x.x']
}
#env.user='xxxx'
#env.password = 'xxxxx'

@roles('vacproxy')
def checks():
    run('uname -a') 

###  get the sshkey from localhost
@roles('localhost')
def get_sshkey():
    run('cp /home/aimcpro/.ssh/id_rsa.pub /home/aimcpro')

### put the sshkey to remote server
@roles('vacproxy')        
def put_sshkey():
    with cd('/tmp'):
        put('/home/aimcpro/.ssh/id_rsa.pub','id_rsa.pub.master')
    run('cat id_rsa.pub.master >> /opt/aimcpro/.ssh/authorized_keys') 

def do_task():
    #execute(checks)
#    execute(get_sshkey)
    execute(put_sshkey)

执行方法及结果:

wKioL1VRwhOQUuTcAALeR8lzkC4337.jpg


3、发布web包的一个例子deploy.py:

#!/usr/bin/env python
# -*- coding: utf-8 -* 
#添加中文注释的编码 
#fabfile.py
from fabric.api import *

env.user = 'root'
env.hosts = ['192.168.1.100']
#远程服务器的密码,这个建议不要填写,宁愿在运行的过程输入,因为这是明文显示的,不安全
#也可以将机子的ssh打通,这样就可以避免输入密码的麻烦
#env.password = 'testtest'

#从版本库取出,并删除.svn文件
def download():
    local('rm -rf /tmp/newer' )
    local('mkdir /tmp/newer')
    local('svn checkout svn://localhost/newer /tmp/newer')
    local('find /tmp/newer -name ".svn" | xargs rm -rf')

#压缩打包
def pack():
    with lcd('/tmp/'):
         local('tar czvf newer.tar.gz ./newer')

#部署远程服务器目录结构
def display():
    run('rm -rf /var/www/html/tmp')
    run('mkdir /var/www/html/tmp')
    # 将本地的压缩包发送到远程服务器
    put('/tmp/newer.tar.gz','/var/www/html/tmp')

    with cd('/var/www/html/tmp'):
         run('tar xvf newer.tar.gz')

    #部分目录进行特别处理
    with cd('/var/www/html/newer/public/'):
         run('cp -r ueditor ../../tmp')

    with cd('/var/www/html/'):
         run('rm -rf newer')
         run('cp -r /var/www/html/tmp/newer ./')

    with cd('/var/www/html/newer/public'):
         run('rm -rf ueditor')
         run('cp -r /var/www/html/tmp/ueditor ./')

# 执行部署
def go():
    download()
    pack()
    display()

执行方法:

fab -f deploy.py go


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯