iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 系统管理利器Fabric
  • 810
分享到

Python 系统管理利器Fabric

利器系统Python 2023-01-31 06:01:45 810人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

一、简介Fabric是基于python 2.5及以上版本实现的ssh命令行工具,简化了SSH了应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。F

一、简介

Fabric是基于python 2.5及以上版本实现的ssh命令行工具,简化了SSH了应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。Fabric在paramiko的基础上做了更高一层的封装,操作起来会更简单.


Fabric官方文档:Http://www.fabfile.org/

api文档:http://docs.fabfile.org/en/1.10/

基础案例文档:http://docs.fabfile.org/en/1.10/tutorial.html

Fabric中文文档:http://fabric-docs-cn.readthedocs.org/zh_CN/latest/


二、安装

(1) 安装epel源
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i 's/^#//' /etc/yum.repos.d/epel.repo
sed -i 's/mirrorlist/#mirrorlist/' /etc/yum.repos.d/epel.repo

(2)安装依赖包
yum install GCc gcc-c++ Python-devel openssl-devel openssl zlin zlib-devel -y

(3)安装pip
yum install python-pip -y

(4)安装fabric
pip install fabric

(5)测试fabric是否安装正确
python -c 'import fabric'


三、Fabric的应用

注意事项:fab命令引用默认文件名为fabfile.py,如果使用非默认文件名称,则需要通过-f来执行,如

fab -H 192.168.1.100,192.168.1.105 -f host_type.py host_type

如果管理机与目标主机未配置秘钥认证信任,将会提示输入目标主机对应账号登录密码。

fab作为fabric程序的命令行入口,提供了丰富的参数调用


工作中的应用场景:由于目前我们用的都是云平台,比如阿里云腾讯云、之前还用过一段时间的ucloud等等,用起来效果还是挺好的,有时候为了更方便的管理,对系统进行优化,安装一些agent(zabbix,saltstack,network等),这个时候我们就可以用fabric进行操作,感觉效果挺好的。

由于fabric是单线程工作的,之前我想将其改成多线程,但是没有成功,如果有朋友应该怎么修改,也请麻烦告诉我一声,谢谢啦,多交朋友多脉圈,哈哈


在这里分享一个febric的脚本

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

from fabric.api import *  
from fabric.colors import *
from fabric.context_managers import *  
from fabric.contrib.console import confirm  
import os
  
#定义目标主机信息  
env.user='root'  
env.hosts=['192.168.0.141',]  
env.passWord='redhat'  

#定义目录结构
LocalDir = "/home/saltroot/gameroot"
RemoteDir = "/home/saltclient/gameroot/"
LocalFile = os.path.join(LocalDir,"script.tar.gz")
RemoteFile = os.path.join(RemoteDir,"script.tar.gz")
 
#打包文件  
def tar_task():  
    with lcd(LocalDir):  
        local("tar -zcf script.tar.gz script")  
  
#上传文件  
def put_task():  
    run("mkdir -p %s" % RemoteDir)
    with settings(warn_only=True):  		#put上传出现异常时继续执行,非终止
        result = put(LocalFile,RemoteFile)  
    if result.failed and not confirm("put file failed, Continue[Y/N]?"):  
        abort("Aborting file put task!")  	#出现异常时,确认是否继续,(Y继续)
  
#校对文件  
def check_task():  
    with settings(warn_only=True):  
        lmd5=local("md5sum %s" % LocalFile,capture=True).split(' ')[0]  
        rmd5=run("md5sum %s" % RemoteFile).split(' ')[0]  
    if lmd5==rmd5:  				#对比本地及远程文件的md5信息
        print yellow("OK")
    else:  
        print red("ERROR")

#初始化
def agent_task():
    with cd(RemoteDir):
        run("tar -zxf script.tar.gz")
        with cd("script/"):
    	    run("./init.sh")

#4个功能一起实现  
@task  						#限定只有Go函数对fab可见
def go():  
    print yellow("program start ...")
    tar_task()  
    put_task()  
    check_task()  
    agent_task()
    print green("program sucessful ...")

    
############################################
# 命令执行方式
# fab go
# 额外的命令
# @roles('new') 
# def show():
#    print green('success')
#    print red('fail')
#    print yellow('yellow')
#定义业务角色
#env.user='root'  
#env.roledefs = {
#    'new': ['192.168.0.100',],
#    'iOS': ['192.168.0.130','192.168.0.101'],
#    'Andorid': ['192.168.0.200', '192.168.0.201', '192.168.0.230']
#}
#
#env.passwords = {
#    'root@192.168.0.100:22': 'redhat',
#    'root@192.168.0.120:22': 'redhat'
#}
############################################




--结束END--

本文标题: Python 系统管理利器Fabric

本文链接: https://www.lsjlt.com/news/190461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python 系统管理利器Fabric
    一、简介Fabric是基于Python 2.5及以上版本实现的SSH命令行工具,简化了SSH了应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能。F...
    99+
    2023-01-31
    利器 系统 Python
  • Python系统管理
    在Linux操作系统上编写shell脚本时, 主要涉及到执行系统命令, 目录和文件操作. 那么在python中怎么办呢, 这主要是几个模块的使用: os, os.path, shutil和sys...os模块包含了大部分的Linux命令, ...
    99+
    2023-01-31
    系统 Python
  • 利用Python框架django开发资产管理系统
    概述...
    99+
    2023-06-02
  • ERP系统客户管理提升企业客户关系管理的利器
    ERP系统是现代企业管理的重要工具,它能够整合企业的资源,提高运营效率。而其中客户管理模块是ERP系统中的重要组成部分,它能够帮助企业更有效地管理客户信息,提高客户满意度,从而提升企业的客户关系管理。本文将详细介绍ERP系统客户管理的重要性...
    99+
    2023-11-18
    利器 客户关系管理 提升企业
  • Python的系统管理_03_pytho
    收录下流程控制语句方便查看和使用:if 语法 if <表达式>:if expression :else:Statement(s)statement(s)如果在条件表达是成立执行IF下语句,不成立执行ELSE下语句。嵌套方式:If...
    99+
    2023-01-31
    系统 Python _03_pytho
  • 【Python】好友管理系统
    好友管理系统 如今的社交软件层出不穷,虽然功能千变万化,但都具有好友管理系统的基本功能,包括添加好友、删除好友、备注好友、展示好友等。下面是一个简单的好友管理系统的功能菜单,如图1所示。 好友管理系统中有5个功能,每个功能都对应一个序号...
    99+
    2023-10-20
    开发语言 python pycharm Powered by 金山文档
  • Python的系统管理_02python
    上一节,起了几个简单例子,目的是解释Python其实并难,特别适用了Ipython这样一个利器,既然是Python的系统管理,面向系统管理员,Python的优点之一是其交互式解释器,也称作shell,和BASH很像,很符合管理员的操作习惯,...
    99+
    2023-01-31
    系统 Python _02python
  • Python的系统管理_04_pytho
    函数:工具集:排序:极值:自定义函数-用户自己编写的预定义的函数-系统自带为什么使用函数:降低编程的难度,代码重用。定义形式:def 函数名(参数列表): #可以没有参数函数体Defadd ():#定义函数C= a+bPrintcAdd()...
    99+
    2023-01-31
    系统 Python _04_pytho
  • Python的系统管理_06_pytho
    import subprocessres =subprocess.Popen(['uname','-sv'],stdout=subprocess.PIPE)uname = res.stdout.read().strip()find()和in...
    99+
    2023-01-31
    系统 Python _06_pytho
  • Python的系统管理_07_pytho
    一个通过正则匹配来下载指定页面图片的示例,几个可能出错的地方都用print打印出来,可以观察是否正确。目标站点::http://www.tupian.com/tag/xinggan#引入数据包import reimport urllib#定...
    99+
    2023-01-31
    系统 Python _07_pytho
  • Python的系统管理_10_pytho
    01类和对象:面向过程和面向对象的编程:面向过程的编程:函数式编程,C程序等。面向对象的编程:C++,Java,Pyton 等类和对象:是面向对象中的两个重要概念类:是对事物的抽象,比如:汽车模型对象:是类的一个实例,比如:QQ轿车,大客车...
    99+
    2023-01-31
    系统 Python _10_pytho
  • 为什么说systemd是系统管理员的利器
    这期内容当中小编将会给大家带来有关为什么说systemd是系统管理员的利器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。       2010 年,我在波士顿的 L...
    99+
    2023-06-16
  • CRM管理系统网络版提升企业管理效率的利器
    CRM(Customer RelationshipManagement)客户关系管理,是一种以客户为中心的管理方式,旨在通过建立、维护和加强与客户的关系,提高客户满意度和忠诚度,从而增加企业收入。随着互联网和移动通信技术的发展,CRM系统...
    99+
    2023-11-21
    管理系统 网络版 利器
  • 通过python socket 管理系统
    目的:通过服务端更改多客户端系统时间,可以通过socket有很多扩展应用下面是script部分一,服务端   #!/usr/bin/python # -*- coding:utf-8 -*- &...
    99+
    2023-01-31
    管理系统 python socket
  • 【19】Python工资管理系统
    实验名称:工资管理系统实验要求:Alex 100000Rain 80000Egon 50000Yuan 30000-----以上是info.txt文件-----实现效果:从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工...
    99+
    2023-01-31
    工资管理系统 Python
  • linux操作系统利用python实现任务管理器可视化功能
    1、python安装 1、创建一个文件夹, mkdir python 进入文件夹下,进行解压: tar zxvf Python-3.6.5.tar 进入Python-3.6.5这个文件夹下面输入: ./...
    99+
    2022-06-04
    python实现任务管理器可视化 linux python 任务管理器
  • 利用python socket管理服务器
    一.socketserver的handle方法处理请求二.实例化socketserver的handle方法def funzioneDemo():     server = ThreadingServer((HOST,PORT),Handle...
    99+
    2023-01-31
    服务器 python socket
  • 利用Java写一个学生管理系统
    目录 前言: 其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组、List等等来写出一个简易的学生管理系统,二、牛逼一...
    99+
    2022-11-12
  • python编写图书管理系统
    本文实例为大家分享了python实现图书管理系统的具体代码,供大家参考,具体内容如下 题目:写一个简单的图书借阅系统‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪...
    99+
    2022-11-13
  • Python实现信息管理系统
    本文实例为大家分享了Python实现信息管理系统的具体代码,供大家参考,具体内容如下 """ 项目名称 = 'python' 文件名= '学生信息管理系统' 作者 = '向日葵' "...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作