系统管理工具包: 测试系统的有效性
| 
                        
 清单 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 
 此流程的最后一个阶段是存储信息,并提 供将当前信息与存储的信息进行比较的方法。 (编辑:滁州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  

