diff options
Diffstat (limited to 'SiteSummary.pm')
-rw-r--r-- | SiteSummary.pm | 41 |
1 files changed, 41 insertions, 0 deletions
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; |