部署P2P扩容的脚本

简介:

这是一个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函数套用函数的两个方法

wKiom1e-qq3x3MHeAACtEDEmFwM212.png


wKiom1e-qq7DVqv6AADgFQWAwAs733.png




 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1842435
相关文章
|
3月前
|
消息中间件 Kubernetes NoSQL
有状态软件如何在 k8s 上快速扩容甚至自动扩容
有状态软件如何在 k8s 上快速扩容甚至自动扩容
|
2月前
|
Java Serverless 测试技术
Serverless 应用引擎常见问题之自动缩容策略触发的时候终止先创建的机器如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
31 2
|
11月前
|
存储 监控 NoSQL
如何使用Docker容器工具实现Redis分布式存储、容错切换、扩容缩容?
如何使用Docker容器工具实现Redis分布式存储、容错切换、扩容缩容?
175 2
|
运维 Kubernetes 负载均衡
一键部署k8s脚本(单机1.18.3)
一键部署k8s脚本(单机1.18.3)
|
运维 监控 Kubernetes
EKS自动扩容-方式一:ASG负载检测自动扩容功能
EKS自动扩容-方式一:ASG负载检测自动扩容功能
366 0
EKS自动扩容-方式一:ASG负载检测自动扩容功能
|
消息中间件 NoSQL 网络协议
Redis集群搭建(传统方式&Docker方式)&集群扩容&集群缩容
Redis集群搭建(传统方式&Docker方式)&集群扩容&集群缩容
167 0
Redis集群搭建(传统方式&Docker方式)&集群扩容&集群缩容
|
Kubernetes 算法 应用服务中间件
Kubernetes:应用自动扩容、收缩与稳定更新
Kubernetes:应用自动扩容、收缩与稳定更新
432 0
|
Java 网络安全
OushuDB 管理指南系统扩容安装准备(上)
本次安装我们假设每台机器上有两个数据盘,分别mount在/data1和/data2上。在其他硬件配置下,可能有很多块盘,用户需要根据盘数的不同更改后面相应的配置信息。尤其需要注意的是HDFS的数据目录和OushuDB的临时文件目录。
134 0
OushuDB 管理指南系统扩容安装准备(上)
|
安全
OushuDB 管理指南系统扩容安装准备(下)
OushuDB 管理指南系统扩容安装准备
87 0
OushuDB 管理指南系统扩容安装准备(下)