系统管理工具包: 测试系统的有效性
清单 6 显示了将文件路径、校验和与其他数据写入标准输出的脚本,并使用冒号将信息的每个字 段隔开。对于校验和,不仅对文件内容执行校验和,而且还将其他信息添加到校验和数据,这样仅通过比 较校验和,就可以确定是否存在差异。 清单 6. 将文件路径、校验和与其他数据写入标准输出 #!/usr/local/bin/perl use Digest::MD5; use IO::File; use strict; use File::Find (); my $chksumfile = 'chksums.dat'; use vars qw/*name *dir *prune/; *name = *File::Find::name; *dir = *File::Find::dir; *prune = *File::Find::prune; File::Find::find({wanted => &wanted}, $ARGV[0]); sub wanted { next unless (-f $name); my $fileinfo = genchksuminfo($name); printf ("%sn",$fileinfo); } sub genchksuminfo { my ($file) = @_; my $chk = Digest::MD5->new(); my (@statinfo) = stat($file); $chk->add(@statinfo[0,1,2,3,4,5,7,9,10]); $chk->addfile(IO::File->new($file)); return sprintf("%s:%s:%s", $file,$chk->hexdigest, join(':',@statinfo[0,1,2,3,4,5,9,10])); } 该脚本使用 Perl 中的 File::Find 模块,该模块可以遍历目录并从基本点发现每个文件和目录。对 于每个文件,都会调用 wanted() 函数,并且在针对每个文件的该函数中,都会调用 genchksuminfo() 函数。该函数获取 stat() 的信息,并在一行中创建文件路径、校验和与其他信息,然后返回该信息。在 此脚本中,该信息仅输出到标准输出。 该命令接受要扫描的目录,因此可以生成校验和信息。对 于 /etc,将使用清单 7 中显示的命令。 清单 7. 扫描 /etc
此流程的最后一个阶段是存储信息,并提 供将当前信息与存储的信息进行比较的方法。 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |