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