#!/usr/bin/perl -w # Output lm-sensors data in something cacti likes # Rene Cunningham Sat, 14 Feb 2009 22:58:32 +1100 use strict; my $cmd = "sensors | awk '{print \$1\$2\$3}'"; my %data; open(PIPE,"$cmd|") or die('cant run sensors'); while(my $line = ) { chomp $line; $line =~ s/(\d)\w+$/$1/; $line =~ s/\-|\+//; if($line =~ m/^in\d{1,}\:/) { my ($in,$value) = (split /\:/, $line)[0,1]; $data{$in} = $value; } elsif($line =~ m/^fan\d{1,}\:/) { my ($fan,$value) = (split /\:/, $line)[0,1]; $data{$fan} = $value; } elsif($line =~ m/^temp\d{1,}\:/) { my ($temp,$value) = (split /\:/, $line)[0,1]; $value =~ s/[^\d+|\.]//g; $data{$temp} = $value; } elsif($line =~ m/^Core/) { my ($core,$value) = (split /\:/, $line)[0,1]; $value =~ s/[^\d+|\.]//g; $data{$core} = $value; } } close(PIPE) or die('cant close sensors'); foreach my $key (sort(keys(%data))) { print $key,':',$data{$key}," "; } print "\n";