package Pfacter::memorytotal; # sub pfact { my $self = shift; my ( $p ) = shift->{'pfact'}; my ( $r ); for ( $p->{'kernel'} ) { /AIX/ && do { if ( -e '/usr/sbin/lsattr' ) { open( F, '/usr/sbin/lsattr -El sys0 |' ); my ( @F ) = ; close( F ); foreach ( @F ) { if ( /realmem\s+(\d+)/ ) { $r = $1; last; } } } }; /Darwin/ && do { if ( -e '/usr/bin/hostinfo' ) { open( F, '/usr/bin/hostinfo |' ); my ( @F ) = ; close( F ); foreach ( @F ) { if ( /Primary\smemory\savailable:\s(.*)/ ) { $r = $1; $r =~ s/\smegabytes/m/g; $r =~ s/\sgigabytes/g/g; $r =~ s/\.00//g; } } } }; /FreeBSD/ && do { if ( -e '/sbin/dmesg' ) { open( F, '/sbin/dmesg |' ); my ( @F ) = ; close ( F ); foreach ( @F ) { if ( /real memory.+?(\d+)K/ ) { $r = $1; last; } } } }; /Linux/ && do { if ( -e '/proc/meminfo' ) { open( F, '/proc/meminfo' ); my ( @F ) = ; close( F ); foreach ( @F ) { if ( /MemTotal:\s+(\d+)\s+\w+/ ) { $r = $1; last; } } } }; /SunOS/ && do { if ( -e '/usr/sbin/prtconf' ) { open( F, '/usr/sbin/prtconf |' ); my ( @F ) = ; close( F ); foreach ( @F ) { if ( /Memory size\:\s+(\d+)\s+(Megabytes)/ ) { if ( $2 eq 'Megabytes' ) { $r = $1*1024; } } } } }; if ( $r ) { return( $r ); } else { return( 0 ); } } } 1;