不知道有多少人公司会用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