免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7280 | 回复: 24
打印 上一主题 下一主题

基于Linux系统网站看护程序的开发 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-09 16:54 |只看该作者 |倒序浏览
50可用积分
基于Linux系统网站看护程序的开发
      
题目简介:本题目以被动修复被黑客篡改的文档为目的,根据目录,文件,文件内容三级轮询,即使恢复需要保护的文档。

本课题预期达到的目标是:
在Shell程序中设置一个含子目录和文件的目录为被保护目录,手工修改其中的目录或文件内容,1分钟后目录中所有被修改过的内容自动恢复成原目录内容。

主要技术:1.apache的状态控制
          2.目录遍历算法
          3.进程启动和停止

希望各位好心高手帮忙用SHELL写一脚本,最好带上解释,本人水平低下,感激不尽.........

最佳答案

查看完整内容

http://bbs.chinaunix.net/thread-1095534-1-1.html应该符合你的要求cat autorestore.sh#!/bin/ksh#定义目录变量,要用绝对路径,不要在尾部加/#备份目录dirs=/tmp/dirs#被保护目录dird=/tmp/dird#间隔秒数times=20if [ "${0#/}" = "${0}" ]then echo "请使用绝对路径!" exit 1ficase "$1" in -enable) ps -ef|awk '$2!=0'$$' && ( $9=="'$0'" && $10=="-start"|| $9~"sh" && $10=="'$0'" && $11=="-start" ) ...

论坛徽章:
0
2 [报告]
发表于 2008-05-09 16:54 |只看该作者
http://bbs.chinaunix.net/thread-1095534-1-1.html
应该符合你的要求

cat autorestore.sh
#!/bin/ksh
#定义目录变量,要用绝对路径,不要在尾部加/
#备份目录
dirs=/tmp/dirs
#被保护目录
dird=/tmp/dird
#间隔秒数
times=20

if [ "${0#/}" = "${0}" ]
then
   echo "请使用绝对路径!"
   exit 1
fi

case "$1" in
-enable)
   ps -ef|awk '$2!=0'$$' && ( $9=="'$0'" && $10=="-start"||
               $9~"sh" && $10=="'$0'" && $11=="-start" ) {system("set -x;kill -9 "$2);}'
   sed  -i  '/^[^#][^:]\+:[0-9]\+:[^:]\+:\/bin\/autorestore.sh/d;$a\
arst:234:respawn:/bin/autorestore.sh -start
' /etc/inittab
   init q
   echo "在/etc/inittab中插入自动运行$0"
   exit 0
;;
-disable)
   sed  -i  '/^[^#][^:]\+:[0-9]\+:[^:]\+:\/bin\/autorestore.sh/d' /etc/inittab
   init q
   sleep 3
   ps -ef|awk '$2!=0'$$' && ( $9=="'$0'" && $10=="-start"||
               $9~"sh" && $10=="'$0'" && $11=="-start" ) {system("set -x;kill -9 "$2);}'
   echo "停止/etc/inittab中自动运行$0"
   exit 0
;;
-stop)
   ps -ef|awk '$2!=0'$$' && ( $9=="'$0'" && $10=="-start"||
               $9~"sh" && $10=="'$0'" && $11=="-start" ) {system("set -x;kill -9 "$2);}'
   echo "停止$0"
   exit 0
;;
-start)
   ps -f -C $0|awk '$3==1 && $2!=0'$$' {system("set -x;kill -9 "$2);}'
   echo "开始自动备份$0"
;;
*)
   echo "
自动从备份目录${dirs}向被保护目录恢复${dird}恢复文件,间隔时间:$times
用法:
提交到/etc/inittab自动运行:
        $0 -enable
取消/etc/inittab中的自动运行:
        $0 -disable
手工运行:
        $0 -start
停止运行:
        $0 -stop
"
exit 1
esac

#无限循环
while [ 1 = 1 ]
do

  cd $dird
  #列被保护目录,包含子子目录、长格式、符号链接显示文件信息、按名子排序、日期全格式
  ls -RlL --full-time >/tmp/filelistd.txt
  cd $dirs
  #列备份目录,包含子子目录、长格式、符号链接显示文件信息、按名子排序、日期全格式
  ls -RlL --full-time >/tmp/filelists.txt
  if [ -s /tmp/filelistcp.txt ]
  then
    rm /tmp/filelistcp.txt
  fi
  gawk  '{
#     print "DBG",NR,FNR,$0;
#找.目录名:  
     if (match($0,"^(\..*)",a)){
#记下目录名
          dir=a[1];
     }else{
#-开头的是文件,其它的就跳过
          if($1~"^-" && NF>=9) {
                 if (NR==FNR){
#备份目录,记下大小及目录,存在数组filesztm中
                         filesztm[ dir "/" $9]=$5 " " $6 " " $7;
                 } else {
#被保护目录,与存在数组filesztm中比较大小及日期,相同就从数组中删除
                         if (filesztm[ dir "/" $9]==($5 " " $6 " " $7))
                               {delete filesztm[ dir "/" $9];}
                 }
          }
     }
  }
  END{
#生成需要恢复的文件清单(2008.12.19注:下面的for循环中原来用i作变量名,论坛中显示有问题,现改为ii作变量)
     for (ii in filesztm){
        if (filesztm[ii]!=""{
            print ii >>"/tmp/filelistcp.txt";
         }
     }
  }' /tmp/filelists.txt /tmp/filelistd.txt
  if [ -s /tmp/filelistcp.txt ]
  then
#从备份目录恢复文件
     cpio -uvdmp "$dird" </tmp/filelistcp.txt
  fi
#延时
  sleep $times
done

[ 本帖最后由 zhangshebao 于 2008-12-19 23:54 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-05-09 17:50 |只看该作者
50~points !

论坛徽章:
0
4 [报告]
发表于 2008-05-09 18:24 |只看该作者
1)cp -ar /protectdir/  /backup/
2)find /protectdir/ -type f |xargs -n1 md5sum|sed 's/[[:space:]]//g' > sfile1  #source md5file
3)create script :
                    find /protectdir/ -type f |xargs -n1 md5sum| > temp
                    jion the sfile1  temp    on  filename  > newfile
                    awk analyze  the newfile  to find out the different
                    if different   cp change file from /backup/ to /protectdir/
4)add the script  in crontab task
*/01 * * * * /script/name            

over

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2008-05-09 18:40 |只看该作者
原帖由 youyu_buzai 于 2008-5-9 16:54 发表
基于Linux系统网站看护程序的开发
      
题目简介:本题目以被动修复被黑客篡改的文档为目的,根据目录,文件,文件内容三级轮询,即使恢复需要保护的文档。

本课题预期达到的目标是:
在Shell程序中设 ...

你的要求似乎用现成的rsync就能实现,何必自己编程?
我倒是怀疑文件很多时,1分钟扫描一次是否会很影响网站的性能,没测试过。楼主自己试试吧。
还有其它思路可以参考。比如网站的目录单独一个文件系统,以只读方式挂载。或者干脆就是光盘映像,或者加写保护的U盘等等。不过只适用于静态网页或不更改的动态网页,需要更新的动态网页不行。

论坛徽章:
0
6 [报告]
发表于 2008-05-09 18:58 |只看该作者
谢谢4楼好意提醒  但是我必须要用shell编程........ 3楼的太简洁了吧.......能详细点带点注释吗?谢谢哦  
望各位高手冲杯咖啡燃一支烟帮助解决下.......谢谢

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
7 [报告]
发表于 2008-05-09 19:25 |只看该作者
原帖由 youyu_buzai 于 2008-5-9 18:58 发表
谢谢4楼好意提醒  但是我必须要用shell编程........ 3楼的太简洁了吧.......能详细点带点注释吗?谢谢哦  
望各位高手冲杯咖啡燃一支烟帮助解决下.......谢谢

用shell写性能不好,而且重新发明轮子也不是个聪明的主意。抱歉,我是不会去写的了。^_^

论坛徽章:
0
8 [报告]
发表于 2008-05-09 21:42 |只看该作者
帮忙啊 高手.......

论坛徽章:
0
9 [报告]
发表于 2008-05-10 04:38 |只看该作者
到我的贴子中取代码吧,这里有的字符被网页解释成格式字符了。
http://bbs.chinaunix.net/thread-1095534-1-1.html

论坛徽章:
0
10 [报告]
发表于 2008-05-12 19:03 |只看该作者
还有高手发表答案吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP