使用python Fabric动态修改远程机器hosts的方法
一、关于fabric
fabric是一个很强大的包,可以将多机操作、部署的命令固化到脚本里面,
详情可参考文档 http://fabric-chs.readthedocs.io/zh_CN/chs/
二、修改远程hosts的方法
如何修改远程服务器的hosts,想到两个办法:
第一个想到的办法就是通过命令连接上服务器,然后使用编辑器vim或者其它打开hosts文件,进行编辑;这种办法有个明显的缺点就是脚本操作比较复杂,需要在脚本里面使用编辑器进行操作,同时还需要动态解析已有的hosts,进行hosts合并。
第二个办法就是采用文件替换的方式,在本地进行编辑hosts,编辑好之后,上传到服务器,替换已有的hosts文件;这个方法操作简单,脚本执行起来也不复杂,可行性要高很多,当然也有个缺点,就是添加hosts的时候,需要操作者本身对已有hosts非常清楚。
三、源码
# encoding=utf-8 from fabric.api import * # 这里配置了hosts信息 env.hosts = ['10.13.131.46', '10.13.135.121', '10.13.133.232'] env.password = "xxxxxxxxxxxxx" env.user = "xiuzhu" env.port = 10022 @task def flush(): sudo('cp /etc/hosts /home/xiuzhu/hosts.bak') put("host1", "/home/xiuzhu/hosts.new") sudo("mv /etc/hosts /etc/hosts.bak") sudo("mv /home/xiuzhu/hosts.new /etc/hosts")
以上这篇使用python Fabric动态修改远程机器hosts的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
利用Service Fabric承载eShop On Containers的实现方法
从Pet Shop 到eShop on Container都是Microsoft在技术演进的路径上给开发者展示.Net的开发能力和架构能力的Sample工程,Petshop的时候更多的是展现应用的分层架构,设计的抽象与模块间的通讯.到了eShop on Container更多的关注在架构设计与微服务化的,下面我们先来看看eshop on Container的架构图 在上图,我们可以看到后端服务分成了 1 Identity microservice(验证服务) 2 Catalog microser
-
python fabric实现远程部署
python fabric实现远程部署 需求描述 在多人协同开发项目的过程中,几乎每天我们都要提交代码到git服务器,然后部署到测试服务器,每天都在敲那重复的几行命令,实在是无趣.怎么办?运维自动化!接下来就说说fabric这玩意儿,替我们完成一些重复繁杂的工作,相信你会跟我一样喜欢上它的! 本文项目背景 我们这次做的项目是用的django框架,每天我们提交代码到git服务器后,都要手动上传代码到测试服务器,然后执行一系列django框架的命令.每天都要浪费10多分钟的时间,做着重复的劳动,这些
-
远程部署工具Fabric详解(支持Python3)
前言 如果你搜一圈 "Fabric "关键字,你会发现 90% 的资料都是过时的,因为现在 Fabric 支持 Python3,但是它又不兼容旧版 Fabric.所以,如果你按照那些教程去操作的话根本跑不通. 如果你还没用过 Fabric,那么这篇文章就是帮你快速上手 Fabric 的.不管你现在用不用,先了解了以后也用得着. 平时我们的开发流程是这样,经过几个月奋战,项目终于开发完了,测试也没问题了,我们就把代码提交到 GitHub 那样的托管平台,准备部署到正式环境.你小心翼翼地登
-
python三大神器之fabric使用教程
fabric 是一个python包 是一个基于ssh的部署工具包 通常用来对网站 微服务等等的批量部署 例如 我有5台线上服务器 可以通过一台对着5台分发,实现自动部署的目的. 简单介绍下 fabric的常用命令 常用命令 lcd(dir): 进入本机某目录 local(cmd): 本机上执行命令 cd(dir): 进入服务器某目录 run(cmd):服务器上执行命令 Fabric Fabric是一个python的远程执行shell的库,同时它也是一个命令行工具.它提供了丰富的同 SSH 交互的
-
python fabric实现远程操作和部署示例
近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多.修复bug什么的,测试,提交版本库(2分钟),ssh到测试环境pull部署(2分钟),rsync到线上机器A,B,C,D,E(1分钟),分别ssh到ABCDE五台机器,逐一重启(8-10分钟) = 13-15分钟其中郁闷的是,每次操作都是相同的,命令一样,要命的是在多个机器上,很难在本机一个脚本搞定,主要时间都浪费在ssh,敲命令上了,写成脚本,完全可以一键执行,花两分钟看下执行结果 直到,发现了fabri
-
Python的批量远程管理和部署工具Fabric用法实例
本文实例讲述了Python的批量远程管理和部署工具Fabric用法.分享给大家供大家参考.具体如下: Fabric是Python中一个非常强大的批量远程管理和部署工具,常用于在多个远程PC上批量执行SSH任务. 常见的使用方法大概总结如下: 1. 首先,要将批量执行的任务写入到一个fabfile.py中, 复制代码 代码如下: # -*- coding:utf-8 -*- from fabric.api import run, local, roles, env, cd env.host
-
使用python Fabric动态修改远程机器hosts的方法
一.关于fabric fabric是一个很强大的包,可以将多机操作.部署的命令固化到脚本里面, 详情可参考文档 http://fabric-chs.readthedocs.io/zh_CN/chs/ 二.修改远程hosts的方法 如何修改远程服务器的hosts,想到两个办法: 第一个想到的办法就是通过命令连接上服务器,然后使用编辑器vim或者其它打开hosts文件,进行编辑:这种办法有个明显的缺点就是脚本操作比较复杂,需要在脚本里面使用编辑器进行操作,同时还需要动态解析已有的hosts,进行ho
-
JavaScript动态修改网页元素内容的方法
本文实例讲述了JavaScript动态修改网页元素内容的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码当用户点击提交按钮后,通过元素的textContent或者innerHTML动态指定元素的内容 <script type="text/javascript"> function showCard() { var message = document.getElementById("CCN").value; var element = docu
-
python使用paramiko实现远程拷贝文件的方法
本文实例讲述了python使用paramiko实现远程拷贝文件的方法.分享给大家供大家参考,具体如下: 首先是安装paramiko库(其实现了SSH2安全协议),ubuntu下可直接通过源安装: sudo apt-get install python-paramiko 接下来是代码实现远程下载: def remote_scp(host_ip,remote_path,local_path,username,password): t = paramiko.Transport((host_ip,22)
-
Android编程动态修改RelativeLayout宽高的方法
本文实例讲述了Android编程动态修改RelativeLayout宽高的方法.分享给大家供大家参考,具体如下: 我们经常会动态修改RelativeLayout的宽高,这样的代码,比较简单,就是修改Relativelayout的LayoutParams就可以.代码一般如下: RelativeLayout ss = (RelativeLayout) findViewById(R.id.myRelativeLayout); ss.setLayoutParams(new RelativeLayout.
-
javascript动态修改Li节点值的方法
本文实例讲述了javascript动态修改Li节点值的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-
JavaScript动态修改弹出窗口大小的方法
本文实例讲述了JavaScript动态修改弹出窗口大小的方法.分享给大家供大家参考.具体如下: 下面的JS代码演示了如何通过window.open弹出一个新的窗口,然后动态修改窗口大小 <!DOCTYPE html> <html> <head> <script> var w; function openwindow() { w=window.open('','', 'width=100,height=100'); w.focus(); } function
-
用python生成(动态彩色)二维码的方法(使用myqr库实现)
最近真的感觉到了python生态的强大(倒吸一口凉气) 现在介绍一个可以生成动态二维码的库(myqr) 效果如图: 第一步要安装myqr库 在cmd中直接用pip安装 pip install myqr 第二步 from MyQR import myqr import os version, level, qr_name = myqr.run( words="https://www.baidu.com", # 可以是字符串,也可以是网址(前面要加http(s)://) version=1
-
Docker 动态修改容器端口映射的方法
前言:Docker端口映射往往是Docker Run命令时通过-p将容器内部端口映射到宿主机的指定端口上,一般来说容器的端口所对应的端口是提前确定需要映射的.但是有些情况下不得不需要临时映射端口,例如Docker中运行着MySQL容器,默认端口是不开放的.那么有什么办法可以让运行中的容器暴露指定的端口呢?客官请往下看---> 方法一:更改Docker配置文件(有风险) 通过修改Docker的配置文件来达到我们的目的,一般来说需要修改以下的文件config.v2.json和hostconfig.j
-
pycharm上的python虚拟环境移到离线机器上的方法步骤
目录 浓缩的步骤 步骤详情如下: 1.新建要迁移的pyhon虚拟环境 2.迁移python虚拟环境到内网机器 3.操作过程中遇到的问题 浓缩的步骤 Pycharm的Terminal 中执行: 查看现有的包到requirements.txt中 pip freeze > requirements.txt 生成依赖包 D:\machangwei\venv\Scripts\python.exe -m pip download -d whl -r requirements.txt #-d指定将虚拟环境中的
-
Python中动态获取对象的属性和方法的教程
首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding: UTF-8 import sys # 模块,sys指向这个模块对象 import inspect def foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name='kitty'): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用类或实例.
随机推荐
- Python自动化测试工具Splinter简介和使用实例
- Windows下ruby语言安装教程
- 使Ext的Template可以解析二层的json数据的方法
- Nginx做NodeJS应用负载均衡配置实例
- Kotlin 基础教程之泛型
- python实现数值积分的Simpson方法实例分析
- Yii实现MySQL多数据库和读写分离实例分析
- 推荐25款php中非常有用的类库
- 【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
- jQuery DOM删除节点操作指南
- LINUX重启MYSQL的命令详解
- 零基础写Java知乎爬虫之获取知乎编辑推荐内容
- 使用window.prompt()实现弹出用户输入的对话框
- 纯javascript实现简单下拉刷新功能
- 基于WTL中使用双缓冲避免闪烁的解决方法
- JavaScript触发器详解
- 802.1x认证技术简介
- Python中协程用法代码详解
- VSCode中如何利用d.ts文件进行js智能提示
- VBS基础篇 - 条件语句(if与Select Case)