#!/bin/bash
# 2016 7 17
# 有问题联系ll104567@163.com
#具体函数不解释
##### 改语系
LANG=en
##### 因为md5sum不能跨目录进行md5、所以选择遍历目录进行操作
##### 没有包括隐藏目录、如有需求、请在for循环里加上ls -a 选项
#要检查的目录
dir=/root/pwb/tmp/md5
#存储要检查的文件
log=/tmp/a.log
#md5文件路径
md5_path=/tmp
#md5文件名
md5_file=a.md5
#错误log
failed_log=/tmp/failed.log
#如果启用true_check函数、、请填写邮箱
mail_box=example@example.com
for_dir()
{
> $log
for file in `ls $1`
do
if [ -d $1"/"$file ];then
for_dir $1"/"$file
else
echo $1"/"$file >> $log
fi
done
}
#for_dir $dir
##### Use md5sum
make_md5()
{
> $md5_path/$md5_file
for i in `cat $log`
do
md5sum $i >> $md5_path/$md5_file
done
}
##### check md5 file exist or not
check_md5()
{
[ ! -f $md5_path/$md5_file ] && for_dir $dir && make_md5
}
do_something()
{
echo "File has been changed" >> $failed_log
cat failed_log|mail -s "Warning" $mail_box
}
true_check()
{
a=`md5sum -c $md5_path/$md5_file | grep -i fail |wc -l`
[ $a -ne 0 ] && md5sum -c $md5_path/$md5_file 2>/dev/null| grep -i fail > $failed_log && do_something
}
print_on_screen()
{
a=`md5sum -c $md5_path/$md5_file | grep -i fail |wc -l`
[ $a -ne 0 ] && echo 'Changed File:' && md5sum -c $md5_path/$md5_file | grep -i fail
}
update_md5()
{
for_dir $dir && make_md5
}
fool_main()
{
check_md5
a=`md5sum -c $md5_path/$md5_file | grep -i fail |wc -l`
[ $a -ne 0 ] && md5sum -c $md5_path/$md5_file | grep -i fail > $failed_log
[ $a -ne 0 ] && echo "Some file changed:" && cat $failed_log
[ $a -ne 0 ] && read -p "请仔细检查以下文件、如果确定是自己改动、请更新md5文件(Y/n):" choice
[[ "$choice" == "Y" ]] || [[ "$choice" == "y" ]] && update_md5
[ $? -eq 0 ] && echo "Md5 file changed already."
}
main()
{
check_md5
print_on_screen
###### true_check
}
main
#fool_main
#update_md5
# 2016 7 17
# 有问题联系ll104567@163.com
#具体函数不解释
##### 改语系
LANG=en
##### 因为md5sum不能跨目录进行md5、所以选择遍历目录进行操作
##### 没有包括隐藏目录、如有需求、请在for循环里加上ls -a 选项
#要检查的目录
dir=/root/pwb/tmp/md5
#存储要检查的文件
log=/tmp/a.log
#md5文件路径
md5_path=/tmp
#md5文件名
md5_file=a.md5
#错误log
failed_log=/tmp/failed.log
#如果启用true_check函数、、请填写邮箱
mail_box=example@example.com
for_dir()
{
> $log
for file in `ls $1`
do
if [ -d $1"/"$file ];then
for_dir $1"/"$file
else
echo $1"/"$file >> $log
fi
done
}
#for_dir $dir
##### Use md5sum
make_md5()
{
> $md5_path/$md5_file
for i in `cat $log`
do
md5sum $i >> $md5_path/$md5_file
done
}
##### check md5 file exist or not
check_md5()
{
[ ! -f $md5_path/$md5_file ] && for_dir $dir && make_md5
}
do_something()
{
echo "File has been changed" >> $failed_log
cat failed_log|mail -s "Warning" $mail_box
}
true_check()
{
a=`md5sum -c $md5_path/$md5_file | grep -i fail |wc -l`
[ $a -ne 0 ] && md5sum -c $md5_path/$md5_file 2>/dev/null| grep -i fail > $failed_log && do_something
}
print_on_screen()
{
a=`md5sum -c $md5_path/$md5_file | grep -i fail |wc -l`
[ $a -ne 0 ] && echo 'Changed File:' && md5sum -c $md5_path/$md5_file | grep -i fail
}
update_md5()
{
for_dir $dir && make_md5
}
fool_main()
{
check_md5
a=`md5sum -c $md5_path/$md5_file | grep -i fail |wc -l`
[ $a -ne 0 ] && md5sum -c $md5_path/$md5_file | grep -i fail > $failed_log
[ $a -ne 0 ] && echo "Some file changed:" && cat $failed_log
[ $a -ne 0 ] && read -p "请仔细检查以下文件、如果确定是自己改动、请更新md5文件(Y/n):" choice
[[ "$choice" == "Y" ]] || [[ "$choice" == "y" ]] && update_md5
[ $? -eq 0 ] && echo "Md5 file changed already."
}
main()
{
check_md5
print_on_screen
###### true_check
}
main
#fool_main
#update_md5
编辑回复