不知道有多少人公司会用svn上线,个人感觉很靠谱,管理起来也很方便,最好配置文件也用svn才最好
下面奉上楼主的svn脚本,以及svn遇到问题解决脚本
#!/bin/bash
###创建日志###
filename=`date '+%Y%m%d_%H%M%S.svnup.log'`
svnversion=''
touch /svnlog/$filename
ip=`cat /tmp/ip.txt|awk -F "." '{print $NF}'`
for i in $ip
do
touch /tmp/shangxianlog/svn.$ip
done
###判断是否重启###
/usr/bin/svn up $svnversion /svnsignal/htdocs 2>&1 | tee -a /svnlog/$filename
restartsignal=`cat /svnlog/$filename | awk '/.jar$|.conf$|classes|lib/' | wc -l`
if [ $restartsignal -gt 0 ]
then
echo "--------------------------resin restart--------------------------------" 2>&1 | tee -a /tmp/shangxianlog/svn.51
echo "---------------------------------51------------------------------------" 2>&1 | tee -a /tmp/shangxianlog/svn.51
ssh 192.168.0.51 "sh /usr/local/resin/bin/resin.sh stop -server youyuan" 2>&1 | tee -a /tmp/shangxianlog/svn.51
echo "51 stopped" 2>&1 | tee -a /tmp/shangxianlog/svn.51
sleep 3
ssh 192.168.0.51 "svn up $svnversion /www/youyuan.com.1/htdocs" 2>&1 | tee -a /tmp/shangxianlog/svn.51
echo "51 svnup ok " 2>&1 | tee -a /tmp/shangxianlog/svn.51
sleep 15
a=`cat /tmp/shangxianlog/svn.51|grep "G"|wc -l`
if [ "$a" -gt 0 ]; then
echo "<<<192.168.0.51 discovery G>>>"
sh /opt/yanchao/jiaoben/shanchuG.sh
if [ "$?" &#61;&#61; 0 ]; then
echo G is delete
fi
fi
ssh 192.168.0.51 "sh /usr/local/resin/bin/resin.sh restart -server youyuan" 2>&1 | tee -a /tmp/shangxianlog/svn.51
sleep 20
echo "51 restart " 2>&1 | tee -a /tmp/shangxianlog/svn.51
else
echo "---------------------------------51------------------------------------" 2>&1 | tee -a /tmp/shangxianlog/svn.51
ssh 192.168.0.51 "svn up $svnversion /www/youyuan.com.1/htdocs" 2>&1 | tee -a /tmp/shangxianlog/svn.51
o&#61;&#96;cat /tmp/shangxianlog/svn.51|grep "G"|wc -l&#96;
if [ "$o" -gt 0 ]; then
echo "<<<192.168.0.51 discovery G>>>"
sh /opt/yanchao/jiaoben/shanchuG.sh
if [ "$?" &#61;&#61; 0 ]; then
echo G is delete
fi
fi
sleep 3
echo "51 svnupok" 2>&1 | tee -a /tmp/shangxianlog/svn.51
fi
svn上线脚本太长了好几百行&#xff0c;就不全部贴出来&#xff0c;只贴个例子
有很多人会问题了
o&#61;&#96;cat /tmp/shangxianlog/svn.51|grep "G"|wc -l&#96;
if [ "$o" -gt 0 ]; then
echo "<<<192.168.0.51 discovery G>>>"
sh /opt/yanchao/jiaoben/shanchuG.sh
if [ "$?" &#61;&#61; 0 ]; then
echo G is delete
fi
fi
这段是在干嘛
哈哈 svn上线确实非常方便&#xff0c;但也有弊端&#xff0c;如果手动在某台服务器去更改的话&#xff0c;下次再svn up就会出现传说中的G问题 这个问题可不容小视&#xff0c;出现G代表此文件没有更新&#xff0c;会出问题的&#xff0c;所有楼主决定&#xff0c;写个一旦上线出现G就去那台服务器删除此文件&#xff0c;并重新svn up.说实话这是楼写过的最难的一个脚本之一&#xff0c;语法不难&#xff0c;只是思路不好找&#xff0c;想了一个多小时才有思路&#xff0c;废话不多说奉上连带脚本
#!/bin/bash
read -p "please enter the ip:" IP
c&#61;&#96;echo $IP|awk -F "." &#39;{print $NF}&#39;&#96;
b&#61;&#96;cat /tmp/shangxianlog/svn.$c|awk &#39;/G/{print $NF}&#39;&#96;
#c&#61;&#96;cat /svnlog/$a|egrep -o "(([0-9]{3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}||G))"|grep -B1 G|sed -n &#39;1&#39;p&#96;
#c&#61;&#96;cat /svnlog/$a|egrep -o "((192.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}||G))"|grep -B1 G|grep "192"&#96;
e&#61;&#96;date &#43;%H%M%S&#96;
for i in $b
do
ssh $IP "cp -f $i /tmp/$e"
if [ "$?" &#61;&#61; 0 ]; then
echo ok
ssh $IP "rm -f $i"
if [ "$?" &#61;&#61; 0 ]; then
echo ok
ssh $IP "svn up /www/youyuan.com.1/htdocs"| tee -a /tmp/$e
fi
fi
done