swarley

sysinfo

Jan 28th, 2012
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 3.01 KB | None | 0 0
  1. use warnings;
  2. use strict;
  3. use utf8;
  4. use Xchat ':all';
  5. use Switch;
  6.  
  7. Xchat::hook_command('sysinfo', 'sysinfo');
  8.  
  9. sub sysinfo {
  10.    if(defined $_[0][1]) {
  11.       sysinfo_l();
  12.       return undef;
  13.    }
  14.    my $format  = 'os~[ %os% ] distro~[ %distro% ] machine~[ %machine% ] cpu~[ %cpu% ] battery~[ %battery% ] mem~[ %mem% ] disk~[ %disk% ] video~[ %video% ] sound~[ %sound% ]  network~[ %network% ] temp~[ %temp% ] uptime~[ %uptime% ]';
  15.    my $os      = get_os(); $format =~ s/\%os\%/$os/;
  16.    my $distro  = get_distro(); $format =~ s/\%distro\%/$distro/;
  17.    my $cpu     = get_cpu(); $format =~ s/\%cpu\%/$cpu/;
  18.    my $name    = machine_name(); $format =~ s/\%machine\%/$name/;
  19.    my $battery = batteryinfo(); $format=~ s/\%battery\%/$battery/;
  20.    Xchat::command('MSG ' . Xchat::get_info('channel') . ' ' . $format);
  21. }
  22.  
  23. sub get_os {
  24.    my $temp = `uname -srm`;
  25.    chomp($temp);
  26.    return $temp;
  27. }
  28.  
  29. sub get_distro {
  30.    my $temp = `cat /etc/issue`;
  31.    $temp = (split(/\\/, $temp))[0];
  32.    $temp =~ s/\s+$//;
  33.    return $temp;
  34. }
  35.  
  36. sub machine_name() {
  37.    my $temp = `uname -n`;
  38.    chomp($temp);
  39.    return $temp;
  40. }
  41.  
  42. sub get_cpu() {
  43.    my @temp = split(/\n/, `cat /proc/cpuinfo`);
  44.    my $ret = '';
  45.    my $model; my $mhz; my $cores;
  46.    foreach my $i (@temp) {
  47.       my @tmp = split(/:/, $i);
  48.       my $label = $tmp[0];
  49.       $label =~ s/\s//g;
  50.       $label =~ s/.[^A-z]//g;
  51.       if ($label eq 'modelname') {
  52.         $model = (split(/:\s/, $i))[1];
  53.       }
  54.       elsif($label eq 'cpuMHz') {
  55.         $mhz = (split(/:\s/, $i))[1];
  56.       }
  57.       elsif($label eq 'cpucores') {
  58.         $cores = (split(/:\s/, $i))[1];
  59.       }
  60.    }
  61.    $ret .= $model . ' ';
  62.    $ret .= $mhz . 'MHz ';
  63.    $ret .= $cores . ' cores';
  64.    return $ret;
  65. }
  66.  
  67. sub strmult {
  68.    my $ret = '';
  69.    for(my $i = 0; $i ne $_[1]; $i++) { $ret .= $_[0]; }
  70.    return $ret;
  71. }
  72.  
  73. sub batteryinfo {
  74.    my @battery = split(/\,/, (split(/\s/, `acpi`, 3))[2], 3);
  75.    $battery[1] =~ s/\s//g;
  76.    my @temp = split(//, $battery[1]);
  77.    chomp($battery[-1]);
  78.    my $temp = @temp;
  79.    my $ret = '';
  80.    if($temp eq 2) {
  81.       return "\00307,01[\003\00303,01|\003\00305,01---------\003\00307,01]: \003\00305,01" . $battery[1] . "\003";
  82.    }
  83.    elsif($temp eq 4) {
  84.       if(defined $battery[2]) {
  85.      return "\00300,01[\003\00303,01||||||||||\003\00300,01]: \003\00309,01" . $battery[1] . "\003";
  86.       }
  87.       else {
  88.      return "\00300,01[\003\00303,01||||||||||\003\00300,01]: \003\00309,01" . $battery[1] . "\003";
  89.       }
  90.    }
  91.    else {
  92.       my $prec = int($temp[0]);
  93.       my $red = 10 - $prec;
  94.       my $ret = '';
  95.       $ret .= "\00300,01[\003\00303,01" . strmult('|', $prec) . "\003\00305,01" . strmult('-', $red) . "\003\00300,01]: \003";
  96.       if($prec < 6) {
  97.      if($prec < 3) {
  98.         $ret .= "\00305,01";
  99.      }
  100.      else {
  101.         $ret .= "\00308,01";
  102.      }
  103.       }
  104.       else {
  105.      if($prec < 9) {
  106.         $ret .= "\00303,01";
  107.      }
  108.      else {
  109.         $ret .= "\00309,01";
  110.      }
  111.       }
  112.       $ret .= $battery[1];
  113.       $ret .= "\003";
  114.    }
  115.    return $ret;
  116. }
  117.  
  118. sub mem_info() {
  119.    my $ret = '';
  120.    my @tmp = split(/\n/, `cat /proc/meminfo`);
  121.    my $total = $tmp[0];
  122.    my $free  = $tmp[1];
  123. }
Add Comment
Please, Sign In to add comment