自动化练习12+md5sum查看文件是否被修改

 

  1. 两台主机里定期自动生成密码修改主机里某一个用户登陆密码,每3个月修改一次,并获取生成密码表

 

 

 

 

 

 

 

 

 

 

2.主备节点定期比对某个配置文件,文件不一致的展示出来

主节点文件:

 

 

 

备节点文件:

 

 

 

shell脚本

 

 

 

添加定时任务

 

 

 

执行结果:

 

 

 

 

 

 

 

注释:diff输出结果的含义a=add,c=change,d=delete, < 代表第一个文件,> 代表第二个文件, --- 则是两个文件内容的分隔符号。

     8a9,16 代表第第一个文件需要增加以下几行,才能和第二个文件得第9行和第16行的内容相匹配

     1039c18 代表第一个文件的第10行和39行需要做出修改,才能和第二个文件的第18行内容相匹配

最后一行代表第二个文件里有,第一个文件里没有,第一个文件需要做出修改,才能和第二个文件相匹配

 

 

用md5sum查看文件及程序是否被修改

#!/bin/bash
md5sum /etc/passwd >>/etc/md5file
md5sum /etc/shadow >>/etc/md5dbfile
md5sum /etc/group >>/etc/md5dbfile
 

#批量检查文件是否被修改的shell脚本


#!/bin/bash
# 定义文件校验脚本

# 声明变量
checksum_dir="file_checksum"

# 创建文件校验存储目录
if [ ! -d $checksum_dir ]; then
mkdir $checksum_dir
fi

# 定义函数,获取文件md5值
get_md5(){
if [ -f $1 ]; then
md5_val=`md5sum $1 | awk '{print $1}'`
echo $md5_val
else
echo "not_found_file"
fi
}

# 定义函数,检查文件md5值是否改变
check_md5(){
# 获取文件md5值
file_md5=`get_md5 $1`
# 获取文件md5值存储文件路径
md5_file="$checksum_dir/$1"

if [ -f $md5_file ]; then
# 获取存储的文件md5值
saved_md5=`cat $md5_file`
# 比较文件md5值是否改变
if [ "$file_md5" != "$saved_md5" ]; then
echo "File $1 tampered!"
else
echo "File $1 not tampered!"
fi
else
# 保存文件md5值
echo $file_md5 > $md5_file
fi
}

# 检查文件md5值
for file in `ls`
do
check_md5 $file
done

 
posted @ 2023-03-11 07:46  往事已成昨天  阅读(41)  评论(0编辑  收藏  举报