diff -r de0a25512844 -r 7d7ca3f05f25 SI/system.pm --- a/SI/system.pm Wed Jan 20 21:42:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -package SI::system; - -use strict; -use warnings; -use File::Temp qw(tempdir); -use if $ENV{DEBUG} ~~ qw(system) => "Smart::Comments"; -use SI::tools; - -$ENV{LC_ALL} = "C"; - -sub id() { - - # hope it's eth* or wlan* - local $_ = (sort grep { /^(eth|wlan)/ } `ifconfig -a`)[0]; - /^(?\S+)\s.*HWaddr\s+(?[\da-f:]+)\s*$/i - and return $+{mac}; - die "ERR: Can't get system identification (MAC address)\n"; -} - -sub hostname(\%) { - my $devs = shift; - my $mnt = tempdir(CLEANUP => 1); - my $h; - - foreach my $fs ( - grep { - exists $devs->{volume}{$_}{type} - and $devs->{volume}{$_}{type} =~ /^ext/i - } @{ $devs->{volumes} } - ) - { - run("mount -r $fs $mnt"); - if (-f "$mnt/etc/hostname") { - chomp($h = cat("$mnt/etc/hostname")); - } - run("umount $mnt"); - return $h if defined $h; - } - - return $h; -} - -sub fsck(\%) { - my $devs = shift; - - foreach - my $v (grep { exists $devs->{volume}{type} } keys %{ $devs->{volume} }) - { - my $volume = $devs->{volume}{$v}; - next if $volume->{type} !~ /^ext/i; - - system("fsck -C0 $v"); - die "ERR: fsck failed\n" if $? > 2; - } -} - -1; - -# vim:sts=4 sw=4 aw ai si: