#!/usr/bin/perl -w use strict; use POSIX qw|strftime LC_TIME setlocale|; setlocale LC_TIME,"fr_CH"; my $delay=.500000; $!=1; sub getvals { open FH,") { /^cpu\d+\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/ && do { push @out,$1+$2+$3+$4+$5+$6+$7+$8,$4+$5+$6+$7+$8; }; }; close FH; return @out; }; my @lvals=getvals(); my $ncpu=@lvals/2-1; open LOAD,"; chomp $load; for my $i (0..$ncpu) { my ($ntot,$idle)=@nvals[$i*2..$i*2+1]; my ($ltot,$lidl)=@lvals[$i*2..$i*2+1]; my ($dtot,$didl)=( $ntot-$ltot , $idle-$lidl ); my $div=$dtot; $div=1 if $div==0; my $pcpu = 100-$didl/$div*100; push @out,sprintf("%.2f", $pcpu); }; syswrite STDOUT,sprintf "\n", strftime("%d %b %T",localtime),$load, join(",",@out); @lvals=@nvals; }; $SIG{'PIPE'}=$SIG{'HUP'}=$SIG{'INT'}=$SIG{'QUIT'}=$SIG{'ABRT'}=$SIG{'TERM'}=$SIG{'KILL'}=$SIG{'ALRM'}=sub { exit; }; syswrite STDOUT,"Content-Type: text/html; charset=ISO-8859-1\r\n\r\n"; my $bgcolor=sprintf "#"."%02X"x3,map { rand(1)*60+40 } (0..2); syswrite STDOUT, < \n\n
 
--
\n"; map { syswrite STDOUT,sprintf "",1+$_,$_,$_; } (0..$ncpu); syswrite STDOUT, "
Cpu %d:  
0%%
\n
\n\n"; for (;;) { interval; select undef,undef,undef,$delay; };