linux脚本一致性判断,生产环境之文件一致性检测脚本
脚本实现目的:
通过脚本检测相应的文件是否发生改变。
脚本思路:
使用文件的md5值作为检测依据,若文件发生变化,则记录日志,并备份发生改变的文件。
通过配置文件的方式指定文件传递给脚本,以方便批量部署。
脚本内容:#!/bin/bash
#use for check file change
#create in 2013-06-07
#Last modify is 2014-04-09
source ~/.bash_profile &> /dev/null
cd /tol/script/
ls /tol/script/logs &> /dev/null || /bin/mkdir -p /tol/script/logs
bakdir=/tol/backup/conf_bak
ls $bakdir &> /dev/null || /bin/mkdir -p $bakdir
dt2=`date +"%F"`
log="/tol/script/logs/md5_check-$dt2.log"
host=`/sbin/ifconfig |grep "inet addr"|cut -d ':' -f2 |awk '{print $1}'|head -1`
conf=/tol/script/md5_check.conf
oldlist=/tol/script/md5_check.old
newlist=/tol/script/md5_check.new
if test ! -f $conf ; then
echo "the $conf does not exist"
exit 0
else
if test ! -f $oldlist ; then
for f in `cat $conf`
do
/usr/bin/md5sum $f >> $oldlist
done
#/usr/bin/chattr +i $oldlist
else
for f in `cat $conf`
do
dt=`date +"%F_%T"`
/usr/bin/md5sum $f > $newlist
old=`cat $oldlist |/bin/grep "$f" |/bin/awk '{print $1}'`
new=`cat $newlist |/bin/grep "$f" |/bin/awk '{print $1}'`
if test -z "$old" ; then
#/usr/bin/chattr -i $oldlist
/usr/bin/md5sum $f >> $oldlist
#/usr/bin/chattr +i $oldlist
#exit 0
else
if test "$new" != "$old" ; then
tar -jpcf $bakdir/`basename $f`_$dt.bz2 $f &> /dev/null
sed -i "s/$old/$new/g" $oldlist
echo "$dt the $host $f was changed" >> $log
echo "#" >> $log
echo "The $f changed time:" >> $log
/bin/ls -l --time-style=long-iso $f >> $log
echo "#" >> $log
echo "The $host last 3 login user:" >> $log
/usr/bin/last |/usr/bin/head -3 >> $log
echo "#" >> $log
#echo "$dt the $host $f was changed" |mail -s "check $host $f" jiank
#else
#echo "$dt the $host $f is normal" >> $log
fi
fi
done
fi
fi
脚本配置文件:
/etc/passwd
/etc/group
/etc/shadow
md5sum命令的常见用法:
md5sum 文件名#查看某一个文件的MD5值
md5sum *.html#查看当前目录下某一类型文件的MD5值,这里是html
md5sum *#查看当前目录下所有文件的MD5值
md5sum -c 保存MD5值的文件名#根据保存MD5值的文件里的内容比对文件是否有变化
find /dir -type f -print0|xargs -0 md5sum > ~/md5 #查看某个目录下所有文件的MD5值
linux脚本一致性判断,生产环境之文件一致性检测脚本相关推荐
- linux 正则查找email_Linux生产环境上,最常用的一套“Sed“技巧
sed命令应用广泛,使用简单,是快速文本处理的利器.它其实没多少技巧,背诵.使用是最合适的学习渠道,属于硬技能.但它又很复杂,因为高级功能太多.本篇不去关注sed的高级功能,仅对常用的一些操作,进行说 ...
- linux网卡slave状态,生产环境中linux bonding 主备模式slave网卡切换的方法
linux bonding 主备模式slave网卡切换的方法 我们有时候做演练或测试,测试bonding slave网卡切换,或者疑是因为一块网卡有问题,想切换到另外一块slave网卡,通常情况下,我 ...
- bash 脚本中激活conda环境_ubuntu18.10目标检测算法环境部署+开机自启动脚本创建screen下的web服务...
内容概要 cuda+cudnn+python环境安装 ubuntu18的开机自启动脚本 screen服务开启 以我个人的实践来看,把python开发的算法封装成webserver的服务供前端程序调用是 ...
- html文件脚本,我想要从html文件或js脚本执行jsx脚本
是的,这是可行的,但努力量取决于您的平台.正如Loic提到的,如果您的目标是让远程用户打开服务器上的网页来执行此操作,那么我所呈现的就是客户端解决方案,但这并不奏效.你最好建立一个完成所有这些工作的W ...
- python 增量备份mysql_Python 生产环境MySQL数据库增量备份脚本
MySQL数据库常用的办法是通过MySQLdump导出sql进行备份,但是不适合数据量很大的数据库,速度,锁表是两个严重的问题.前面写了一遍文章介绍xtrabackup的热备工具,见 http://w ...
- python比较数据库表今天跟前一天数据增量,Python 生产环境Mysql数据库增量备份脚本...
Mysql数据库常用的办法是通过mysqldump导出sql进行备份,但是不适合数据量很大的数据库,速度,锁表是两个严重的问题.前面写了一遍blog介绍xtrabackup的热备工具.下面的脚本是基于 ...
- fastdfs搭建_记一次生产环境FastDFS文件系统安装部署过程
概述 因为前面在做FastDFS文件系统安装部署介绍时我们已经测试将文件上传成功了,但我们无法下载.因此安装Nginx作为服务器以支持Http方式访问文件.同时,后面安装FastDFS的Nginx模块 ...
- shell脚本:判断本地和远程文件是否存在
判断本地文件是否存在 #! bin/sh file=$1 if [ -f "$file" ]; thenecho $file elseecho "no such file ...
- Linux权限委派(生产环境必备)
权限委派就是让普通用户能获得管理员权限的一种方式 演示:/etc/sudoers文件操作,暂无pam模块高级设计 例如,普通用户想要获得创建用户的权限: 1.在root账户下 vim /etc/sud ...
最新文章
- 消息中间件系列第2讲:如何进行消息队列选型?
- FreeBSD最小化安装没有man解决方法
- 计算机硬件四大部分组成部分,2014考研计算机大纲 组成原理部分四大变化解析...
- python前缀表达式求值_python数据结构与算法 11 后缀表达式求值
- 寄存器在哪里_二、汇编之寄存器
- Python教程:推荐一个比 open 读文件还好用、方便的库
- 多个视频切换时,只改变SourceFilter,不改变Filter Graph中其他Filter的C#实现
- Java泛型的不变性和作用域
- nlp 命名实体识别 算法_中文命名实体识别算法 Lattice LSTM
- Python 动态获取对象的属性和方法(内含inspect)
- CCCF译文 | 从计算思维到计算行动*
- ios系统脚本服务器加速,提高iOS项目的编译速度
- android 通过访问 php 接受 or 传送数据
- Redis Cluster集群的搭建与实践
- windows上查看和设置weblogic的编码格式
- Gson反序列化详解
- dsp31段最佳调音图_车载dsp功放调音小经验分享!dsp调音31段EQ调音图与皇帝位时间延迟调整...
- 《TCPIP详解》卷一系列解读
- No MyBatis mapper was found in ‘[xx.mapper]‘ package. Please check your configuration.特殊处理
- voip和rtc_VoIP语音通话研究【进阶篇(四):freeswitch+webrtc+sip.js的通话】