All pastes #573241 Raw Edit

Ploximeth

public text v1 · immutable
·published 2007-06-18 01:47 UTC
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__;