rendered paste body#!/usr/bin/perl
$reset = "\e[0m";
$green = "\e[32m";
$red = "\e[31m";
$yello = "\e[33m";
my $acpitool = `which acpitool`;
my $grok = `$acpitool`;
print "+-----------------------+\n";
print "| SYS INFO |\n";
print "| version 1.1 |\n";
print "+-----------------------+\n";
print "| Battery |\n";
print "| AC Adapter:";
if ($grok =~ /on-line/) {
print $green." Online $reset\t|\n";
$xpos = 3;
}
elsif ($grok =~ /off-line/) {
print $red." Offline $reset\t|\n";
$xpos = 4;
}
else {
print $yello." Unknown $reset\t|\n";
}
print "| Battery #1: ";
if ($grok =~ /Battery \#1/) {
print $green.substr((split(/\s/, (split(/\n/, $grok))[0]))[10], 0, -1)."\t$reset|\n";
}
print "| Battery #2: ";
if ($grok =~ /Battery \#2/) {
print $green.substr((split(/\s/, (split(/\n/, $grok))[1]))[10], 0, -1)."\t$reset|\n";
}
print "+-----------------------+\n";
print "| Temperature |\n";
if ($grok =~ /Thermal zone 1/) {
print "| Zone 1: ";
$thr = substr((split(/\s/, (split(/\n/, $grok))[$xpos]))[7], 0);
print $green.$thr." C \t$reset|\n" if ($thr < 65);
print $yello.$thr." C \t$reset|\n" if ($thr > 65 && $thr < 85);
print $red.$thr." C \t$reset|\n" if ($thr > 85 && $thr < 95);
print $yello."??? C \t$reset|\n" if (!defined($thr));
}
if ($grok =~ /Thermal zone 2/) {
print "| Zone 2: ";
$thr = substr((split(/\s/, (split(/\n/, $grok))[3]))[7], 0);
print $green.$thr." C \t$reset|\n" if ($thr < 65);
print $yello.$thr." C \t$reset|\n" if ($thr > 65 && $thr < 85);
print $red.$thr." C \t$reset|\n" if ($thr > 85 && $thr < 95);
print $yello."??? C \t$reset|\n" if (!defined($thr));
}
if ($grok =~ /Thermal zone 3/) {
print "| Zone 3: ";
$thr = substr((split(/\s/, (split(/\n/, $grok))[3]))[7], 0);
print $green.$thr." C \t$reset|\n" if ($thr < 65);
print $yello.$thr." C \t$reset|\n" if ($thr > 65 && $thr < 85);
print $red.$thr." C \t$reset|\n" if ($thr > 85 && $thr < 95);
print $yello."??? C \t$reset|\n" if (!defined($thr));
}
print "+-----------------------+\n";
print "| Disk Drives |\n";
my $grok = `df -h`;
my @a = split(/\n/, $grok);
for ($x=0;$x<$#a+1;$x++) {
@j = split(/\s/, $a[$x]);
$dev = $j[0];
next if ($dev eq "none");
next if ($dev eq "Filesystem");
$size = $j[14];
$used = $j[17];
print "| $dev -> $used/$size\t$reset|\n"
}
print "+-----------------------+\n";
print "| Uptime |\n";
$uptime=`uptime`;
chop($uptime);
$uptime=~ /.+ up (.+),.+[0-9]+ user/;
$uptime=$1;
print "| $uptime \t|\n";
print "+-----------------------+\n";
print "| CPU Info |\n";
$cpu_load=`export TERM=dumb; top -b -d .1 -n2 | grep "Cpu(s)" | awk '{print \$2}' | tail -n1 | sed 's/%//'`; chop($cpu_load);
$cpu_load=sprintf("%.0f",($cpu_load));
$cpu_load="$cpu_load";
$col = $green if $cpu_load < 21;
$col = $yello if $cpu_load < 51 && $cpu_load > 20;
$col = $red if $cpu_load > 51;
print "| load - $col$cpu_load% \t$reset|\n";
$cpu=`cat /proc/cpuinfo`;
if($cpu=~/sparc/){
$cpu=~ /(.*sparc.*)/;
@cpumodel=split/:/,$1;
$cpumodel=$cpumodel[1];
$cpumodel=~ s/ //;
$cpu=~ /(.*bogomips.*)/;
@cpumhz=split/:/,$1;
$cpumhz=sprintf ("%.f",$cpumhz[1]);
$cpuinf="$cpumodel @ ${cpumhz}MHz";
}elsif($cpu=~/ 486/){
$cpu=~ /(.*model name.*)/;
@cpumodel=split/:/,$1;
$cpumodel=$cpumodel[1];
$cpumodel=~ s/ //;
$cpu=~ /(.*bogomips.*)/;
@cpumhz=split/:/,$1;
$cpumhz=sprintf ("%.f",$cpumhz[1]);
$cpuinf="$cpumodel @ ${cpumhz}MHz";
}else{
$cpu=~ /(.*model name.*)/;
@cpumodel=split/:/,$1;
$cpumodel=$cpumodel[1];
$cpumodel=~ s/ //;
$cpu=~ /(.*cpu MHz.*)/;
@cpumhz=split/:/,$1;
$cpumhz=sprintf ("%.f",$cpumhz[1]);
$cpuinf="$cpumodel @ ${cpumhz}MHz";
}
$cpu_cnt=`cat /proc/cpuinfo | grep 'processor' | wc -l | sed 's/ *//'`; chop($cpu_cnt);
$cache=`cat /proc/cpuinfo | grep 'cache size' | head -n 1 | sed -e 's/^.*: //'`; chop($cache);
$bogomips=`cat /proc/cpuinfo | grep 'bogomips' | head -n 1 | sed -e 's/^.*: //'`; chop($bogomips);
print "| speed - ${cpumhz}MHz\t|\n";
print "| cache - $cache\t|\n";
print "+-----------------------+\n";
print "| Memory |\n";
# Memory
$mem_total=`free | grep Mem | awk '{printf (\"%dMm\", \$2/1024 )}'`; chop($mem_total);
$mem_free=`free | grep Mem | awk '{printf (\"%.0fMm\", ( \$3 -(\$6 + \$7) )/1024)}'`; chop($mem_free);
$mem_per=`free -m | grep Mem | awk '{printf (\"%.0f\", (\$2 - \$3 + \$6 + \$7) * (100/ \$2))}'`;
$buffered_mem=`free | grep Mem | awk '{printf (\"%.0fM\", (\$6)/1024)}'`;
$cached_mem=`free | grep Mem | awk '{printf (\"%.0fM\", (\$7)/1024)}'`;
# Swap (try to handle this smoothly)
$any_swap=`free -m | grep Swap | awk '{print \$2}'`;
if($any_swap != 0){
$swap_total=`free | grep Swap | awk '{printf (\"%dMm\", \$2/1024 )}'`; chop($swap_total);
$swap_free=`free | grep Swap | awk '{printf (\"%.0fMm\", ( \$3 -(\$6 + \$7) )/1024)}'`; chop($swap_free);
$swap_per=`free -m | grep Swap | awk '{printf (\"%.0f\", (\$2 - \$3 + \$6 + \$7) * (100/ \$2))}'`;
}
chop($mem_free);
chop($mem_total);
$color = $red if ($mem_total-$mem_free < $mem_total/5);
$color = $yello if ($mem_total-$mem_free > $mem_total/3.5);
$color = $green if ($mem_total-$mem_free > $mem_total/1.5);
print "| sys - $color${mem_free}MB/${mem_total}MB\t$reset|\n";
chop($swap_free);
chop($swap_total);
$color = $red if ($swap_total-$swap_free < $swap_total/5);
$color = $yello if ($swap_total-$swap_free > $swap_total/3.5);
$color = $green if ($swap_total-$swap_free > $swap_total/1.5);
print "| swap - $color${swap_free}MB/${swap_total}MB\t$reset|\n";
print "+-----------------------+\n";
print "| Video |\n";
$xchk=`ps aux | grep "[x]init" | wc -l`;
$gdmchk=`ps aux | grep "[g]dm-binary" | wc -l`;
$gdmchk2=`ps aux | grep "[g]dm" | wc -l`;
if($xchk > 0){
$idchk=`ps aux | grep "[x]init " | awk '{print \$1}'`; $me=`whoami`;
if($idchk eq $me){
$do_display="1";
}else{
$do_display="1";
}
}elsif($gdmchk > 0 && $xchk == "0"){
$do_display="1";
}elsif($gdmchk2 > 0 && $xchk == "0" && $gdmchk =="0"){
$do_display="1";
}else{
$do_display="0";
$con_display="1";
}
if($do_display == "1"){
if(-x "/usr/X11R6/bin/xdpyinfo"){ $xdpy="/usr/X11R6/bin/xdpyinfo"; }
if(-x "/usr/local/X11R6/bin/xdpyinfo"){ $xdpy="/usr/X11R6/bin/xdpyinfo"; }
if(-x "/usr/bin/xdpyinfo"){ $xdpy="/usr/bin/xdpyinfo"; }
if(-x "/usr/X11R6/bin/xrandr"){ $xrandr="/usr/X11R6/bin/xrandr"; }
if(-x "/usr/local/X11R6/bin/xrandr"){ $xrandr="/usr/local/X11R6/bin/xrandr"; }
if(-x "/usr/bin/xrandr"){ $xrandr="/usr/bin/xrandr"; }
$xrandr = "DISPLAY=:0 ".$xrandr;
$xdpy = "DISPLAY=:0 ".$xdpy;
if($xrandr){
$refrsh_rate = `$xrandr | grep "*" | awk '{print \$10}' | sed 's/*//'`; chop($refrsh_rate);
if($refrsh_rate){ $refrsh_rate="/${refrsh_rate}Hz"; }
}
if(-x "/usr/X11R6/bin/glxinfo"){ $glx="/usr/X11R6/bin/glxinfo"; }
if(-x "/usr/local/X11R6/bin/glxinfo"){ $glx="/usr/local/X11R6/bin/glxinfo"; }
if(-x "/usr/bin/glxinfo"){ $glx="/usr/bin/glxinfo"; }
# $glx = "DISPLAY=:0 $glx";
if($glx){
$dri=`$glx | grep "direct rendering: Yes" | wc -l`;
if($dri > 0){ $dri="${green}enabled"; }else{ $dri="${red}disabled"; }
}else{
$dri="/No DRI";
}
$vid_card=`lspci | grep VGA | sed -e 's/.*: //' | sed 's/ (.*//' | sed 's/ATI Technologies Inc //' | tail -n1`; chop($vid_card);
if($xdpy){
$screen_res=`$xdpy | grep dimensions | awk '{print \$2}'`; chop($screen_res);
if(!$screen_res){ $screen_res="Unknown Res"; }
$screen_depth=`$xdpy | grep "depth of root window" | awk '{print \$5}'`; chop($screen_depth);
if(!$screen_depth){ $screen_depth="Unknown"; }
}
# Get Xorg/Xfree version
if(!$x){ $x=`$xdpy | grep XFree86"."version | awk '{print \$3}'`; if($x ne ""){ $x="XFree86 $x"; }} chomp($x);
if(!$x){ $x=`$xdpy | grep X.Org"."version | awk '{print \$3}'`; if($x ne ""){ $x="X.Org $x"; }} chomp($x);
if(!$x){ $x="Unknown X-Server"; }
# Get Desktop Enviroment/Window Manager (All rewrote as of v2.8)
$fluxchk=`ps ax | grep [f]luxbox | wc -l`; if($fluxchk > 0){ $de=`fluxbox -version | grep Fluxbox | sed 's/-.*//' | sed 's/ :.*//'`; }
$bbchk=`ps ax | grep [b]lackbox | wc -l`; if($bbchk > 0){ $de=`blackbox --version | grep Blackbox | sed 's/ :.*//'`; }
$obchk=`ps ax | grep [o]penbox | wc -l`; if($obchk > 0){ $de=`openbox --version | grep Openbox`; }
$wmchk=`ps ax | grep [w]maker | wc -l`; if($wmchk > 0){ $de=`wmaker --version | grep "Window Maker"`; }
$kdechk=`ps ax | grep [s]tartkde | wc -l`; if($kdechk > 0){ $de=`kde-config --version | grep "KDE:" | sed 's/://'`; }
$echk=`ps ax | grep [e]nlightenment | wc -l`; if($echk > 0){ $de=`enlightenment --version | grep Version | awk '{print \$1, \$3}'`; }
$gchk=`ps ax | grep [g]nome-session | wc -l`; if($gchk > 0){ $de=`gnome-panel --version | sed 's/.*gnome-panel //'`; $de="Gnome $de"; }
$xfchk=`ps ax | grep [x]fwm4 | wc -l`; if($xfchk > 0){ $de=`xfwm4 --version | grep version | awk '{print \$5}'`; { $de="Xfce $de"; }}
if(!$de){ $de="Unknown GUI"; }
# $de=`sed 's/)//' \$de`;
chop($de);
}else{
$vid_card=` lspci| grep VGA | sed -e 's/.*: //' | sed 's/ (.*//' | sed 's/ATI Technologies Inc //' | tail -n1`;
chop($vid_card);
}
print "| res - $screen_res\t|\n";
print "| dpi - ${screen_depth}bpp \t|\n";
print "| dri - $dri \t$reset|\n";
print "| wm - $de \t|\n";
print "+-----------------------+\n";
print "| Misc info |\n";
$pc=`ps ax | wc -l | awk '{print \$1 - 4}'`; chop($pc);
print "| proc - $pc running\t|\n";
print "| kernel - ".substr(`uname -r`, 0, -1)."\t|\n";
print "+-----------------------+\n";
__END__;