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