Linux系统shell脚本之检测两台服务器指定目录下的文件一致性

Posted 江湖有缘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统shell脚本之检测两台服务器指定目录下的文件一致性相关的知识,希望对你有一定的参考价值。

Linux系统shell脚本之检测两台服务器指定目录下的文件一致性

一、脚本要求

检测两台服务器指定目录下的文件一致性

二、脚本内容

   #!/bin/bash
##########################################################
#File Name:md5_file.sh
#Version:V1.0
#Aurhor:
#Emali:
#Created Time:2022-05
#Description: create files & modify files
##########################################################


#检测两台服务器指定目录下的文件一致性
DIR=/data/mysql

REMOTEIP=192.168.3.71
#将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中
find $DIR -type f|xargs md5sum > /tmp/md5_a.txt
ssh $REMOTEIP "find $DIR -type f|xargs md5sum > /tmp/md5_b.txt"
scp $REMOTEIP:/tmp/md5_b.txt /tmp   #将远端的MD5值的文件拷贝到本端
#将文件名作为遍历对象进行一一比对
for i in `awk 'print $2' /tmp/md5_a.txt`
do
#以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果
if grep -qw "$i" /tmp/md5_b.txt
then
md5_a=`grep -w "$i" /tmp/md5_a.txt|awk 'print $1'`
md5_b=`grep -w "$i" /tmp/md5_b.txt|awk 'print $1'`
#当文件存在时,如果md5值不一致则输出文件改变的结果
if [ $md5_a != $md5_b ]
then
echo "$i changed."
fi
else
echo "$i deleted."
fi
done

三、测试设置

1.server1创建文件

[root@192 mysql]# touch file0..10
[root@192 mysql]# ls
file0  file1  file10  file2  file3  file4  file5  file6  file7  file8  file9
[root@192 mysql]# echo hello >> file1
[root@192 mysql]# echo world >> file8
[root@192 mysql]# echo file >> file3

2.server2创建文件

[root@node01 ~]# mkdir -p /data/mysql
[root@node01 ~]# cd /data/mysql/
[root@node01 mysql]# ls
[root@node01 mysql]# touch file0..10
[root@node01 mysql]# echo hello >>  file1
[root@node01 mysql]# echo diff >> file2

3.配置ssh免密

在这里插入代码片

四、执行脚本

[root@192 scripts]# ./md5_file.sh 
md5_b.txt                                                                                                                                         100%  573   272.6KB/s   00:00    
/data/mysql/file2 changed.
/data/mysql/file3 changed.
/data/mysql/file8 changed.
[root@192 scripts]# 

以上是关于Linux系统shell脚本之检测两台服务器指定目录下的文件一致性的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统shell脚本之监控httpd服务

Linux系统shell脚本之向指定终端发送消息

Linux shell脚本入门

Linux系统shell脚本之根分区监控

pyton 编写脚本检测两台主机之间的通信状态,异常邮件通知

Linux系统shell脚本之批量修改服务器密码