From 4f5fe5139130a682f4e416d0361792cda42f812c Mon Sep 17 00:00:00 2001 From: Petter Reinholdtsen Date: Tue, 19 Jan 2010 09:36:20 +0000 Subject: Move some generic functions to the sitesummary perl library. --- SiteSummary.pm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'SiteSummary.pm') diff --git a/SiteSummary.pm b/SiteSummary.pm index f86bb3d..4db2953 100644 --- a/SiteSummary.pm +++ b/SiteSummary.pm @@ -9,6 +9,7 @@ our $VERSION = 0.01; our @ISA = qw(Exporter); our @EXPORT = qw( for_all_hosts + get_default_route get_filepath_current get_hostclass get_site @@ -22,6 +23,8 @@ our @EXPORT = qw( get_debian_edu_profile get_debian_edu_ver get_hardware_info + is_laptop + is_pkg_installed ); my $pwd = "/var/lib/sitesummary/entries"; # Path to the entries @@ -122,6 +125,22 @@ sub get_macaddresses { } } +# Return current default route used on host +sub get_default_route { + my $hostid = shift; + my $path = get_filepath_current($hostid, "/system/route-n"); + if (open(my $fh, $path)) { + while (<$fh>) { + if (m/^0.0.0.0\s+(\S+)\s+/) { + close($fh); + return $1; + } + } + close($fh); + } + return undef; +} + # # Return the IP address on the primary network interface # @@ -262,6 +281,28 @@ sub get_hardware_info { } } +sub is_pkg_installed { + my ($hostid, $pkgname) = @_; + # Check debian/dpkg-l for 'ii *pkgname ' + my $path = get_filepath_current($hostid, "/debian/dpkg-l"); + if (open (my $fh, $path)) { + while(<$fh>) { + if (m/^ii *$pkgname /) { + close($fh); + return 1 + } + } + close($fh); + } + return undef; +} + +sub is_laptop { + my $hostid = shift; + my $path = get_filepath_current($hostid, "/system/laptop"); + return -e $path; +} + sub for_all_hosts { my $callback = shift; -- cgit v1.2.3