这是一个python 2.7的脚本,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
####################################################################################
#coding=utf-8                                      
#脚本用途:P2PRELAY扩容脚本                               
#编写时间:2016年8月24日                                
#脚本作者:乐橙运维组                                  
####################################################################################
#!/usr/bin/env python
#载入模块
import commands
import os
import socket, fcntl, struct
import time
#制定启动看门狗的命令
dog_command='cd /opt/server && nohup ./P2PRelayDog.py>/dev/null &'
#将server包复制到/opt目录下
os.system("cp -rf /share/yunwei/server /opt/server")
print "/share/yunwei/server 已经全部复制到/opt文件夹下了。"
#获取当前主机的外网ip地址
def get_local_ip(ifname = 'eth1'):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    inet = fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15]))
    ret = socket.inet_ntoa(inet[20:24])
    return ret
print "此服务器的外网ip是" + get_local_ip()
os.system("sed -i s/'RELAY_AGENT_IP ='/'RELAY_AGENT_IP = %s'/ /opt/server/P2PRelay.conf"%(get_local_ip()))
print "已经将外网ip地址添加到P2PRelay.conf文件里。"
#通过dog拉起P2PRelay服务
def P2P_start():
    print "现在将启动P2PRelay服务,并且会在20秒后显示P2P进程:"
    os.system(dog_command)
    time.sleep(15)
    print "5..."
    time.sleep(1)
    print "4..."
    time.sleep(1)
    print "3..."
    time.sleep(1)
    print "2..."
    time.sleep(1)
    print "1!"
    time.sleep(1)
    print "P2P进程如下:"
    os.system("ps -ef|grep cd|grep -v grep|awk '{print $2}'|xargs kill -9")
    os.system("ps -ef | grep P2P")
if __name__ == '__main__':
    get_local_ip()
    P2P_start()
print "整个P2PRelay扩容脚本执行完毕,感谢您的使用。"

每一步都是模块化编写,这里说一下这个脚本的背景和流程。

公司的公共挂载盘里就有P2P的安装文件夹,名字叫server,当购买到新设备之后,需要先把这个server文件夹复制到/opt目录下。

然后server文件夹里有一个P2PRelay.conf文件,平常时候需要手动的把服务器自己的公网IP地址填写到P2PRelay.conf里的RELAY_AGENT_IP = 后面,所以这里使用的sed -i的字符串替换方法。

但是这里要注意一下,因为公网ip是由一个函数得到的,这个函数在sed -i是不能当变量那样直接使用的,需要像脚本里写的那样,当然,如果

os.system("sed -i s/‘RELAY_AGENT_IP.*‘/‘RELAY_AGENT_IP = ‘ {}/ relay.conf".format(get_local_ip()))

这么写的话更友好,这里使用了小小的正则表达式,以后即使RELAY_AGENT_IP后面有ip地址也会被正确的替换了。

这里有几点可以留着以后用:

1)linux 带变量替换字符串的方法:#sed -i s/$a/$b/ filename   或者 #sed -i ’s/’$a’/’$b’/’ filename   或者#eval sed -i ’s/$a/$b/’ filename

2)python函数套用函数的两个方法

本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1842435

部署P2P扩容的脚本相关推荐

  1. 运维与自动化系列③自动化部署基础与shell脚本实现

    自动化部署基础与shell脚本实现 关于自动化的基础知识: 1.1:当前代码部署的实现方式: 运维纯手工scp到web服务器 纯手工登录git服务器执行git pull或svn服务器执行svn upd ...

  2. Ceph实战(十一):重磅!!!一键部署集群的脚本

    您好,我是码农飞哥,本篇文章是Ceph实战专栏的第十一篇文章,前面的系列文章我们分别介绍了集群的部署,介绍了集群的组件,最后到介绍到Ceph的IO流程等等.这一篇文章是结束之作,我将介绍一下重点介绍快 ...

  3. greenplum6数据库安装部署以及扩容介绍

    greenplum数据库安装部署 环境以及准备工作 集群机器规划 ip 主机名 基本配置 操作系统 11.8.37.111 gpmaster 4C8G CentOS7.4 11.8.37.112 gp ...

  4. 通过Rancher部署并扩容Kubernetes集群基础篇一

    一 应用场景描述 持续跟踪研究Kubernetes也有一段时间了,Kubernetes作为谷歌开源的生产级别的容器调度系统从开源初始便获得了众多的关注.一些有研发实力的公司调研过Kubernetes的 ...

  5. 一键部署ETCD集群脚本

    #!/bin/bash set -x set -e#更改这里的IP, 只支持部署3个节点etcd集群 declare -A NODE_MAP=(["etcd0"]="19 ...

  6. 源码部署Apache和shell脚本安装

    一.Apache特点: 功能强大,配置简单,速度快,应用广泛,性能稳定,可做代理服务器及负载均衡来使用. 1.处理静态页面图片不及nginx 2.Apace.结合php来处理php.perl等,经典的 ...

  7. Docker环境下的前后端分离部署与运维 脚本

    <Docker环境下的前后端分离部署与运维>脚本 文章目录 <Docker环境下的前后端分离部署与运维>脚本 一.Docker虚拟机常用命令 二.安装PXC集群,负载均衡,双机 ...

  8. Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇记录了用docker搭建ElasticS ...

  9. Spring Boot 项目部署方案 /打包 + Shell 脚本部署详解,稳的一批

    本篇和大家分享的是 Spring Boot 打包并结合 Shell 脚本命令部署,重点在分享一个shell 程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assemb ...

最新文章

  1. Android adb常用命令
  2. 发现“郝茵晴”:屌丝们的社会性传播实验
  3. C#算数运算符、关系运算符、逻辑运算符、语句
  4. IT新潮关键词汇整理
  5. Andoroid之BottomNavigationView右上角添加红点布局和自动跳转到底部具体第几个Tab
  6. 丹麦为NSA开绿灯 通过通信中心监控欧洲政客
  7. java正则表达式校验车牌号_车牌号校验正则表达式
  8. python内置函数sorted()
  9. 50欧姆 50Ω 同轴双端口衰减器(DC-40GHz ;2W---10KW)
  10. Vodafone 移动终端声质量评价
  11. 华为手机怎么用计算机玩隐藏空间,华为隐私空间怎么用?开启隐私空间私人信息存储更安全...
  12. python单片机自动浇花_MicroPython实例之TPYBoardv102自动浇花系统
  13. 什么是依赖注入和控制反转
  14. win10 android驱动问题,WIN10 64位 android驱动无法安装
  15. 资产监测设备研发中,遇到的VCC、VDD、VEE、VSS都是什么意思?
  16. 非常轻巧的GIS数据转换器,中文的
  17. c语言程序代码应缩进几格,汉诺塔c语言程序代码
  18. 素数筛选法,快速获取素数序列
  19. 判断iPhone 硬件设备型号
  20. 海蜘蛛软路由 linux,海蜘蛛网络科技官方网站 :: 做最好的中文软路由 :: 软件路由器 :: 软路由 :: 软件路由 :: RouterOs...

热门文章

  1. 2019 年,10篇新颖到出格的 AI 论文
  2. 一篇文章搞懂人脸识别的十大过程
  3. 2019年上半年收集到的人工智能图神经网络干货文章
  4. AI人工智能开发的路径有三条,最成功的是机器学习技术:强化学习
  5. SAP QM 检验批号码跳号问题之对策
  6. 什么是强人工智能,强人工智能的实现,需要具备哪些条件?
  7. 企业管理做不好的根源!「管理智慧」
  8. SAP MM MIGO + 311 针对预留单做转库不能修改目的地存储地点!
  9. 如何成为一名优秀CTO
  10. 《数学之美》第29章 各个击破算法和Google云计算的基础