自用的P2PServer扩容脚本

前端之家收集整理的这篇文章主要介绍了自用的P2PServer扩容脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

公司的P2PServer的扩容有以下几点:

1)P2PServer.conf需要添加当前流量最小的p2pstun的外网IP地址,这一步手动输入;

2)GMS的Group.xml需要把新的P2PServer外网IP地址添加进去,这一步使用sshpass来实现;

3)数据库服务器需要把新的P2PServer外网IP地址写进语句里去,这一步同样使用sshpass来实现;


这个脚本我犯懒,就直接用shell写了,内容如下:

#!/bin/bash
#Author:ChrisChan@2017-09-20
#这个脚本用于乐橙P2PServer的扩容

ip=$(ifconfigeth1|grep"inetaddr"|awk'{print$2}'|awk-F:'{print$2}')
echo"本机的外网IP是:"$ip
echo"准备启动乐橙P2PServer的扩容..."
sleep1
echo"3..."
sleep1
echo"2..."
sleep1
echo"1..."

#添加开机启动项
echo"cd/opt/server&&./stopAll.sh">>/etc/rc.d/rc.local
echo"cd/opt/server&&nohuppythonP2PServerDog.py1>/dev/null2>&1&">>/etc/rc.d/rc.local
echo"开机启动已经添加完毕!"

#解压缩server文件夹
cd/share/yunwei/p2p/&&tar-zxvfserver.tar.gz-C/opt/

#安装sshpass
yuminstall-ysshpass
echo"sshpass已经安装完毕!"

echo"数据库服务器密码">/root/MysqL.passwd
echo"gms服务器密码">/root/gms.passwd

#修改p2pserver.conf并且启动狗
read-p"请输入你要添加的p2pstun的外网IP地址:"stun
sed-i"s/STUN_IP=/STUN_IP=$stun"//opt/server/P2PServer.conf
nohuppython./P2PServerDog.py>/dev/null2>&1&
echo"P2PServerDog已经启动..."

#更改GMS的Group.xml
sshpass-f/root/gms.passwdssh-o"StrictHostKeyCheckingno"root@gms服务器IP地址"sh/root/addip.sh$ip"

#生成数据库语句并执行
cat<<EOF>p2pserver.sql
insertintothird_service(host,port,create_time,weight)values('$ip',8800,now(),100);
EOF
sshpass-f/root/civil.passwdssh-o"StrictHostKeyCheckingno"root@数据库服务器IP地址'MysqL_PWD=you_passwordMysqL-uroot-pyour_db'<p2pserver.sql
echo"数据库语句已经添加完毕...如果要删除,请用'deletefromthird_servicewhereid=新ID号;'来>删除。"
echo"P2PServer扩容完成,感谢您的使用!"


在GMS的服务器上需要一个addip.sh,内容如下:

#!/bin/bash
#Author:ChrisChan@2017-09-20
#这个脚本用于Group.xml的修改

sed-i'$i'"\<Server>$1:8801</Server>"''/root/Group.xml
pid=$(ps-ef|grepGMS|grep-v'grep'|grep-v'GMSDog'|awk'{print$2}')#获取到GMS的进程号,并且重启
kill-9$pid
sleep20


本地执行效果如下:

wKioL1nkakyybVGUAADAjx8CG-s023.png


在GMS查看Group.xml,已经将新的IP地址添加到Group.xml里:

wKiom1nkbZeynQUwAADkr80GuKc543.png


数据库里查看语句,也达到了新增的目的:

wKioL1nkayqT34D8AAEsvKZ_iw0498.png


新的知识点!

1)sshpass里具体执行的command是在远程服务器上执行,以本文为例,如果变量ip使用的是单引号的话,那么远程的服务器是无法获取到这个值的,所以应该用的是双引号;


2)这种直接将命令行写入ssh参数的做法很容易造成引号嵌套地狱,虽然看上去你的脚本很酷,但是维护起来很麻烦,所以还是推荐在本地写一个脚本,然后远程执行这个脚本;

猜你在找的Bash相关文章