自用的P2PServer擴容腳本
阿新 • • 發佈:2017-10-16
shell sed sshpass
公司的P2PServer的擴容有以下幾點:
1)P2PServer.conf需要添加當前流量最小的p2pstun的外網IP地址,這一步手動輸入;
2)GMS的Group.xml需要把新的P2PServer外網IP地址添加進去,這一步使用sshpass來實現;
3)數據庫服務器需要把新的P2PServer外網IP地址寫進語句裏去,這一步同樣使用sshpass來實現;
這個腳本我犯懶,就直接用shell寫了,內容如下:
#!/bin/bash #Author:[email protected] #這個腳本用於樂橙P2PServer的擴容 ip=$(ifconfig eth1 | grep "inet addr" | awk ‘{print $2}‘ | awk -F: ‘{print $2}‘) echo "本機的外網IP是:"$ip echo "準備啟動樂橙P2PServer的擴容..." sleep 1 echo "3..." sleep 1 echo "2..." sleep 1 echo "1..." #添加開機啟動項 echo "cd /opt/server && ./stopAll.sh" >> /etc/rc.d/rc.local echo "cd /opt/server && nohup python P2PServerDog.py 1>/dev/null 2>&1 &" >> /etc/rc.d/rc.local echo "開機啟動已經添加完畢!" #解壓縮server文件夾 cd /share/yunwei/p2p/ && tar -zxvf server.tar.gz -C /opt/ #安裝sshpass yum install -y sshpass 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 nohup python ./P2PServerDog.py > /dev/null 2>&1 & echo "P2PServerDog已經啟動..." #更改GMS的Group.xml sshpass -f /root/gms.passwd ssh -o "StrictHostKeyChecking no" [email protected]服務器IP地址 "sh /root/addip.sh $ip" #生成數據庫語句並執行 cat <<EOF > p2pserver.sql insert into third_service(host, port, create_time, weight) values(‘$ip‘, 8800, now(), 100); EOF sshpass -f /root/civil.passwd ssh -o "StrictHostKeyChecking no" [email protected]數據庫服務器IP地址 ‘MYSQL_PWD=you_password mysql -uroot -p your_db‘ < p2pserver.sql echo "數據庫語句已經添加完畢...如果要刪除,請用‘delete from third_service where id = 新ID號;‘來>刪除。" echo "P2PServer擴容完成,感謝您的使用!"
在GMS的服務器上需要一個addip.sh,內容如下:
#!/bin/bash #Author:[email protected] #這個腳本用於Group.xml的修改 sed -i ‘$i ‘"\ <Server>$1:8801</Server>"‘‘ /root/Group.xml pid=$(ps -ef | grep GMS | grep -v ‘grep‘ | grep -v ‘GMSDog‘ | awk ‘{print $2}‘) #獲取到GMS的進程號,並且重啟 kill -9 $pid sleep 20
本地執行效果如下:
在GMS查看Group.xml,已經將新的IP地址添加到Group.xml裏:
在數據庫裏查看語句,也達到了新增的目的:
新的知識點!
1)sshpass裏具體執行的command是在遠程服務器上執行,以本文為例,如果變量ip使用的是單引號的話,那麽遠程的服務器是無法獲取到這個值的,所以應該用的是雙引號;
2)這種直接將命令行寫入ssh參數的做法很容易造成引號嵌套地獄,雖然看上去你的腳本很酷,但是維護起來很麻煩,所以還是推薦在本地寫一個腳本,然後遠程執行這個腳本;
本文出自 “生活就是等待戈多” 博客,請務必保留此出處http://chenx1242.blog.51cto.com/10430133/1972884
自用的P2PServer擴容腳本