加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

系统管理工具包: 测试系统的有效性

发布时间:2016-08-09 16:51:04 所属栏目:Unix 来源:站长网
导读:关于本系列 典型的 UNIX 管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍 和系统。存在各种用于简化不同过程的关键实用工具、命令行链和脚本。其中一

清单 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

$ perl savemd5.pl /etc
/private/etc/6to4.conf:e6b1ba3e7683a0df9be21c9e9f5d1f6a:234881026:46788:
         33188:1:0:0:1152674600:1155914028
/private/etc/afpovertcp.cfg:dc7c89b0626d6e603131902d387816f7:234881026:30152:
         33188:1:0:0:1151780398:1166194017
/private/etc/aliases:de483c306c03f35dcbd45d609f8e68ce:234881026:47440:
        33188:1:0:0:1151828538:1155914028
/private/etc/aliases.db:aa95ae673dcb6ba89684a6f4bbe3dba5:234881026:47437:
        33188:1:0:0:1151828588:1155914028
/private/etc/authorization:39f7938ae1df629d422b27ec1a17f3dd:234881026:950752:
        33188:1:0:0:1162503594:1162503594
/private/etc/auto.mnt:3da7579cdc03c529059a42de51c6679e:234881026:1013554:
        33188:1:0:0:1162728759:1162728759
/private/etc/auto.mnt~:54d856aa344d03a6084d63c9dd7e1d9c:234881026:1013530:
        33188:1:0:0:1162728576:1162728576
/private/etc/bashrc:fb23bdcacf23f69f1ce92e3b910c03b9:234881026:42880:
        33188:1:0:0:1151805563:1155914028
/private/etc/compilers:363c62792a79df85cd0c8d71ff274495:234881026:821586:
        33188:1:0:0:1159026690:1162503150
/private/etc/crontab:b9af1eb506bd68a43465789174bfe5e1:234881026:29678:
        33188:1:0:0:1151800085:1166193736
...

此流程的最后一个阶段是存储信息,并提 供将当前信息与存储的信息进行比较的方法。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读