Subversion Repositories DevTools

Rev

Rev 1042 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1042 Rev 5404
Line 28... Line 28...
28
#......................................................................#
28
#......................................................................#
29
 
29
 
30
require 5.008_002;
30
require 5.008_002;
31
use strict;
31
use strict;
32
use warnings;
32
use warnings;
-
 
33
use Sys::Hostname;
33
 
34
 
34
my $dpkg = "$ENV{HOME}/dpkg_archive";
35
my $dpkg = "$ENV{HOME}/dpkg_archive";
-
 
36
my $CountDeleted = 0;
-
 
37
my $CountMissing = 0;
-
 
38
my $CountDamaged = 0;
-
 
39
my $CountTotal = 0;
35
 
40
 
-
 
41
#
-
 
42
#   MetaData
-
 
43
#   About the disk
-
 
44
#
-
 
45
printMetaData('Hostname', hostname);
-
 
46
insertDiskMetaData($dpkg);
-
 
47
 
-
 
48
#
-
 
49
#   Package Information
-
 
50
#   
36
opendir(DIR, $dpkg) || die "can't opendir $dpkg: $!";
51
opendir(DIR, $dpkg) || die "can't opendir $dpkg: $!";
37
my @dlist = readdir(DIR);
52
my @dlist = readdir(DIR);
38
closedir DIR;
53
closedir DIR;
39
 
54
 
40
foreach my $pname ( sort @dlist )
55
foreach my $pname ( sort @dlist )
Line 75... Line 90...
75
                quoteData('deleted', int($age), $age ),
90
                quoteData('deleted', int($age), $age ),
76
                quoteData('link', $link,  $link  ),
91
                quoteData('link', $link,  $link  ),
77
                quoteData('broken', 1, ! -e $vdir  ),
92
                quoteData('broken', 1, ! -e $vdir  ),
78
                quoteData('noDescpkg', 1, ! -f "$vdir/descpkg"  ),
93
                quoteData('noDescpkg', 1, ! -f "$vdir/descpkg"  ),
79
                "\n";
94
                "\n";
-
 
95
 
-
 
96
        #
-
 
97
        #   Update statistics
-
 
98
        #
-
 
99
        $CountTotal++;   
-
 
100
        $CountDeleted++ if ($age);
-
 
101
        $CountMissing++ if (! -e $vdir);
-
 
102
        $CountDamaged++ if (! -f "$vdir/descpkg");
80
    }
103
    }
81
}
104
}
82
 
105
 
-
 
106
#
-
 
107
#   Output summary data as MetaData
-
 
108
#
-
 
109
printMetaData('Total',$CountTotal);
-
 
110
printMetaData('Delete',$CountDeleted);
-
 
111
printMetaData('Missing',$CountMissing);
-
 
112
printMetaData('Damaged',$CountDamaged);
-
 
113
 
83
#-------------------------------------------------------------------------------
114
#-------------------------------------------------------------------------------
84
# Function        : quoteData
115
# Function        : quoteData
85
#
116
#
86
# Description     : Given an item and data, provided a quoted string
117
# Description     : Given an item and data, provided a quoted string
87
#
118
#
Line 98... Line 129...
98
        return $item . '="' . $data . '" ';
129
        return $item . '="' . $data . '" ';
99
    }
130
    }
100
    return '';
131
    return '';
101
}
132
}
102
 
133
 
-
 
134
#-------------------------------------------------------------------------------
-
 
135
# Function        : printMetaData 
-
 
136
#
-
 
137
# Description     : Add metadata to the output stream
-
 
138
#
-
 
139
# Inputs          : name        - Name of the data
-
 
140
#                   value       - Value
-
 
141
#
-
 
142
# Returns         : 
-
 
143
#
-
 
144
sub printMetaData
-
 
145
{
-
 
146
    my ($name,$value) = @_;
-
 
147
    print('Metadata ', quoteData($name, $value, 1), "\n");
-
 
148
}
-
 
149
 
-
 
150
 
-
 
151
#-------------------------------------------------------------------------------
-
 
152
# Function        : insertDiskMetaData  
-
 
153
#
-
 
154
# Description     : Generates Disk Metadata entries in the output stream
-
 
155
#                   Keys are: 
-
 
156
#                       size   used  avail  pcent 
-
 
157
#                       itotal iused iavail ipcent 
-
 
158
#
-
 
159
#                   Needs to use basic 'df' functionality. Not all targets
-
 
160
#                   will have a full gnu implementation. 
-
 
161
#
-
 
162
# Inputs          : $path       - Path somewhere on the drive to examine
-
 
163
#
-
 
164
# Returns         : Nothing
-
 
165
#
-
 
166
sub insertDiskMetaData
-
 
167
{
-
 
168
    my ($path) = @_;
-
 
169
 
-
 
170
    #
-
 
171
    #   Get disk information
-
 
172
    #
-
 
173
    my @items = qw(- size used avail pcent -);
-
 
174
    open my $dfData , "-|", "df", '-P', $path;
-
 
175
    while (<$dfData>)
-
 
176
    {
-
 
177
        next if $. < 2;
-
 
178
        s~\s+$~~;
-
 
179
        s~\%~~g;
-
 
180
        my @data = split;
-
 
181
 
-
 
182
        for (my $ii=0; $ii <= $#items; $ii++)
-
 
183
        {
-
 
184
            next if $items[$ii] eq '-';
-
 
185
            printMetaData( $items[$ii], $data[$ii]);
-
 
186
        }
-
 
187
    }
-
 
188
    close $dfData;
-
 
189
 
-
 
190
    #
-
 
191
    #   Get Inode information
-
 
192
    #   Disk can fill up if inodes are depleated
-
 
193
    #
-
 
194
    @items = qw(- isize iused iavail ipcent -);
-
 
195
    open $dfData , "-|", "df", '-Pi', $path;
-
 
196
    while (<$dfData>)
-
 
197
    {
-
 
198
        next if $. < 2;
-
 
199
        s~\s+$~~;
-
 
200
        s~\%~~g;
-
 
201
        my @data = split;
-
 
202
 
-
 
203
        for (my $ii=0; $ii <= $#items; $ii++)
-
 
204
        {
-
 
205
            next if $items[$ii] eq '-';
-
 
206
            printMetaData($items[$ii], $data[$ii]);
-
 
207
        }
-
 
208
    }
-
 
209
    close $dfData;
-
 
210
}
-
 
211
 
-
 
212
 
-
 
213
 
-
 
214
 
103
 
215