检测不同服务器上代码差别的shell的脚本

2021-06-15 11:05:05 浏览数 (1)

在生产中,为了防止高并发,单点,灾变,和负载均衡等一些突发情况,会将多台服务器用来跑用一代码。但是如果上线的代码出现了问题,将导致代码不一样的情况。

代码语言:javascript复制
#!/bin/bash
#用途:检测不同服务器上代码差别的shell的脚本。
#版本:v0.1

#假设B机器IP地址为192.168.0.1

B_ip=192.168.0.1 
dir=/data/wwwroot/www.abc.com
#首先检查/tmp/md5.list文件是否存在,存在的话就删除掉,避免影响后续操作
[ -f /tmp/md5.list ] && rm -f /tmp/md5.list

#把除了uploads以及tmp目录外其他目录下的全部文件列出来 
  cd $ dir 
    find . ( -path "/uploads*" -o  -path  "./tmp*" ) 

#用while循环,求出所有文件的md5值,并写入一个文件里 
  cat  /tmp/file.Iist l while read line 
  do 
      md5sum  $line 
  done  >>  /tmp/md5.Iist 

#将md5.list拷贝到B机器 
scp  /tmp/md5.Iist  $B_ip:/tmp/ 

#判断/tmp/check_md5.sh文件是否存在 
[ -f  /tmp/check_md5.sh &&  rm -f  /tmp/check_md5.sh ]

#用Here Document编写check_md5.sh脚本内容 
cat > /tmp/check_md5. sh << EOF 

#!/bin/bash 
dir=/data/wwwroot/www.abc.com 
##注意,这里涉及到的特殊符号都需要脱义,比如反引号和$ 

n=`wc -l /tmp/md5.list | awk '{print  $1}'` 
for i in `sep 1 $n`
do 
    file_name=` sed -n "$i"p  /tmp/md5.list I awk '{print $1}'` 
    md5=`sed -n  "$i" p  /tmp/md5.Iist  l awk '{print $2 }'`
    if  [ -f  $file_name ] 
    then 
      md5_b= `md5sum  $file_name` 
    if  [  $md5_b  != $md5  ]
    then 
        echo  " $file_name changed" 
    fi 
    else 
        echo  " $file_name lose " 
    fi 
done  >   /data/change. Iog 
EOF 
scp  /tmp/check_md5.sh  $B_ip:/tmp/ 
ssh $B_ip  "/bin/bash  /tmp/check_md5.sh" 

0 人点赞