部署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
相关文章
|
26天前
|
消息中间件 Kubernetes NoSQL
有状态软件如何在 k8s 上快速扩容甚至自动扩容
有状态软件如何在 k8s 上快速扩容甚至自动扩容
|
4月前
|
NoSQL Redis
轻松掌握组件启动之Redis集群扩展秘籍:轻松扩容与缩容,释放高性能潜能
在这篇文章中,我们将揭示Redis集群的扩容和缩容操作,让您的Redis集群发挥最佳性能和可伸缩性。通过增加主节点和从节点,并将它们无缝添加到集群中,您将能够轻松扩展您的Redis集群以满足不断增长的需求。同时,我们还将探讨如何进行缩容操作,即删除节点,以优化集群资源的利用。无论您是初学者还是经验丰富的Redis用户,本文将为您提供一系列有用的技巧和最佳实践,帮助您更好地管理和优化Redis集群,实现更高的性能和可扩展性。
|
9月前
|
存储 监控 NoSQL
如何使用Docker容器工具实现Redis分布式存储、容错切换、扩容缩容?
如何使用Docker容器工具实现Redis分布式存储、容错切换、扩容缩容?
144 2
|
10月前
|
运维 Kubernetes 负载均衡
一键部署k8s脚本(单机1.18.3)
一键部署k8s脚本(单机1.18.3)
|
运维 监控 Kubernetes
EKS自动扩容-方式一:ASG负载检测自动扩容功能
EKS自动扩容-方式一:ASG负载检测自动扩容功能
343 0
EKS自动扩容-方式一:ASG负载检测自动扩容功能
|
Linux
记一次Linux虚拟机进行磁盘扩展后的扩容操作过程
记一次Linux虚拟机进行磁盘扩展后的扩容操作过程
574 0
记一次Linux虚拟机进行磁盘扩展后的扩容操作过程
|
消息中间件 NoSQL 网络协议
Redis集群搭建(传统方式&Docker方式)&集群扩容&集群缩容
Redis集群搭建(传统方式&Docker方式)&集群扩容&集群缩容
152 0
Redis集群搭建(传统方式&Docker方式)&集群扩容&集群缩容
|
Kubernetes 算法 应用服务中间件
Kubernetes:应用自动扩容、收缩与稳定更新
Kubernetes:应用自动扩容、收缩与稳定更新
410 0
|
Java 网络安全
OushuDB 管理指南系统扩容安装准备(上)
本次安装我们假设每台机器上有两个数据盘,分别mount在/data1和/data2上。在其他硬件配置下,可能有很多块盘,用户需要根据盘数的不同更改后面相应的配置信息。尤其需要注意的是HDFS的数据目录和OushuDB的临时文件目录。
127 0
OushuDB 管理指南系统扩容安装准备(上)
|
安全
OushuDB 管理指南系统扩容安装准备(下)
OushuDB 管理指南系统扩容安装准备
83 0
OushuDB 管理指南系统扩容安装准备(下)