SI/system.pm
changeset 27 de0a25512844
parent 26 39421a9700c5
equal deleted inserted replaced
17:d4942418a9ea 27:de0a25512844
    18 }
    18 }
    19 
    19 
    20 sub hostname(\%) {
    20 sub hostname(\%) {
    21     my $devs = shift;
    21     my $devs = shift;
    22     my $mnt = tempdir(CLEANUP => 1);
    22     my $mnt = tempdir(CLEANUP => 1);
    23     my $r;
    23     my $h;
    24 
    24 
    25     foreach my $fs (
    25     foreach my $fs (
    26         grep { $devs->{volume}{$_}{type} =~ /^ext/i }
    26         grep {
    27         grep { exists $devs->{volume}{$_}{type} }
    27             exists $devs->{volume}{$_}{type}
    28         keys %{ $devs->{volume} }
    28               and $devs->{volume}{$_}{type} =~ /^ext/i
       
    29         } @{ $devs->{volumes} }
    29       )
    30       )
    30     {
    31     {
    31         run("mount -r $fs $mnt");
    32         run("mount -r $fs $mnt");
    32         if (-f "$mnt/etc/hostname") {
    33         if (-f "$mnt/etc/hostname") {
    33             die "ERR: found 2nd hostname" if defined $r;
    34             chomp($h = cat("$mnt/etc/hostname"));
    34             chomp($r = cat("$mnt/etc/hostname"));
       
    35         }
    35         }
    36         run("umount $mnt");
    36         run("umount $mnt");
       
    37         return $h if defined $h;
    37     }
    38     }
    38 
    39 
    39     return $r;
    40     return $h;
       
    41 }
       
    42 
       
    43 sub fsck(\%) {
       
    44     my $devs = shift;
       
    45 
       
    46     foreach
       
    47       my $v (grep { exists $devs->{volume}{type} } keys %{ $devs->{volume} })
       
    48     {
       
    49         my $volume = $devs->{volume}{$v};
       
    50         next if $volume->{type} !~ /^ext/i;
       
    51 
       
    52         system("fsck -C0 $v");
       
    53         die "ERR: fsck failed\n" if $? > 2;
       
    54     }
    40 }
    55 }
    41 
    56 
    42 1;
    57 1;
    43 
    58 
    44 # vim:sts=4 sw=4 aw ai si:
    59 # vim:sts=4 sw=4 aw ai si: