Advertisement
swarley

sysinfo.pl

Jan 28th, 2012
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 4.79 KB | None | 0 0
  1. use warnings;
  2. use strict;
  3. use utf8;
  4. use Xchat ':all';
  5.  
  6. Xchat::hook_command('sysinfo', 'sysinfo');
  7.  
  8. sub sysinfo {
  9.    if(defined $_[0][1]) {
  10.       sysinfo_l();
  11.       return undef;
  12.    }
  13.    #my $format  = "\x0F\x02\x0302os~\x03[\x02 %os% \x02] \x0302distro~\x03[\x02 %distro% \x02] \x0302machine~\x03[\x02 %machine% \x02] \x0302cpu~\x03[\x02 %cpu% \x02] \x0302battery~\x03[\x02 \x02%battery%\x02 \x02] ";
  14.    my $format  = "\x0F\x02\x0302os~\x03[\x02 %os% \x02] \x0302distro~\x03[\x02 %distro% \x02] \x0302machine~\x03[\x02 %machine% \x02] \x0302cpu~\x03[\x02 %cpu% \x02] ";
  15.    $format .= "\x0302mem~\x03[\x02 %mem% \x02] \x0302disk~\x03[\x02 %disk% \x02] \x0302video~\x03[\x02 %video% \x02] \x0302sound~\x03[\x02 %sound% \x02] ";
  16.    $format .= "\x0302network~\x03[\x02 %network% \x02] \x0302temp~\x03[\x02 %temp% \x02] \x0302uptime~\x03[\x02 %uptime% \x02]\x02";
  17.    my $os      = get_os(); $format =~ s/\%os\%/$os/;
  18.    my $distro  = get_distro(); $format =~ s/\%distro\%/$distro/;
  19.    my $cpu     = get_cpu(); $format =~ s/\%cpu\%/$cpu/;
  20.    my $name    = machine_name(); $format =~ s/\%machine\%/$name/;
  21.    #my $battery = batteryinfo(); $format =~ s/\%battery\%/$battery/;
  22.    my $mem     = mem_info(); $format =~ s/\%mem\%/$mem/;
  23.    my $disk    = disk_info(); $format =~ s/\%disk\%/$disk/;
  24.    my $video   = video_info(); $format =~ s/\%video\%/$video/;
  25.    Xchat::command('MSG ' . Xchat::get_info('channel') . ' ' . $format);
  26. }
  27.  
  28. sub get_os {
  29.    my $temp = `uname -srm`;
  30.    chomp($temp);
  31.    return $temp;
  32. }
  33.  
  34. sub get_distro {
  35.    my $temp = `cat /etc/issue`;
  36.    $temp = (split(/\\/, $temp))[0];
  37.    $temp =~ s/\s+$//;
  38.    return $temp;
  39. }
  40.  
  41. sub machine_name() {
  42.    my $temp = `uname -n`;
  43.    chomp($temp);
  44.    return $temp;
  45. }
  46.  
  47. sub get_cpu() {
  48.    my @temp = split(/\n/, `cat /proc/cpuinfo`);
  49.    my $ret = '';
  50.    my $model; my $mhz; my $cores;
  51.    foreach my $i (@temp) {
  52.       my @tmp = split(/:/, $i);
  53.       my $label = $tmp[0];
  54.       next unless defined $label;
  55.       $label =~ s/\s//g;
  56.       $label =~ s/.[^A-z]//g;
  57.       if ($label eq 'modelname') {
  58.         $model = (split(/:\s/, $i))[1];
  59.       }
  60.       elsif($label eq 'cpuMHz') {
  61.         $mhz = (split(/:\s/, $i))[1];
  62.       }
  63.       elsif($label eq 'cpucores') {
  64.         $cores = (split(/:\s/, $i))[1];
  65.       }
  66.    }
  67.    $ret .= $model . ' ';
  68.    $ret .= sprintf("%.0f", $mhz) . 'MHz ';
  69.    $ret .= $cores . ' cores';
  70.    return $ret;
  71. }
  72.  
  73. sub strmult {
  74.    my $ret = '';
  75.    for(my $i = 0; $i ne $_[1]; $i++) { $ret .= $_[0]; }
  76.    return $ret;
  77. }
  78.  
  79. sub batteryinfo {
  80.    my @battery = split(/\,/, (split(/\s/, `acpi`, 3))[2], 3);
  81.    $battery[1] =~ s/\s//g;
  82.    my @temp = split(//, $battery[1]);
  83.    chomp($battery[-1]);
  84.    my $temp = @temp;
  85.    if($temp eq 2) {
  86.       return "\00307,01[\003\00303,01|\003\00305,01---------\003\00307,01]: \003\00305,01" . $battery[1] . " \003";
  87.    }
  88.    elsif($temp eq 4) {
  89.       if(defined $battery[2]) {
  90.      return "\00300,01[\003\00303,01||||||||||\003\00300,01]: \003\00309,01" . $battery[1] . " \003";
  91.       }
  92.       else {
  93.      return "\00300,01[\003\00303,01||||||||||\003\00300,01]: \003\00309,01" . $battery[1] . " \003";
  94.       }
  95.    }
  96.    else {
  97.       my $prec = int($temp[0]);
  98.       my $red = 10 - $prec;
  99.       my $ret = '';
  100.       $ret .= "\00300,01[\003\00303,01" . strmult('|', $prec) . "\003\00305,01" . strmult('-', $red) . "\003\00300,01]: \003";
  101.       if($prec < 6) {
  102.      if($prec < 3) {
  103.         $ret .= "\00305,01";
  104.      }
  105.      else {
  106.         $ret .= "\00308,01";
  107.      }
  108.       }
  109.       else {
  110.      if($prec < 9) {
  111.         $ret .= "\00303,01";
  112.      }
  113.      else {
  114.         $ret .= "\00309,01";
  115.      }
  116.       }
  117.       $ret .= $battery[1];
  118.       $ret .= " \003\x0F";
  119.       return $ret;
  120.    }
  121. }
  122.  
  123. sub mem_info() {
  124.    my $ret = '';
  125.    my @tmp = split(/\n/, `cat /proc/meminfo`);
  126.    my $total = $tmp[0];
  127.    my $free  = $tmp[1];
  128.    $total =~ m/.+?\s+(\d+)\s/;
  129.    $total = int($1);
  130.    $total /= 1000;
  131.    $free  =~ m/.+?\s+(\d+)\s/;
  132.    $free  = int($1);
  133.    $free  /= 1000;
  134.    $ret .= "TotalMem: " . sprintf("%.0f MB", $total)  . " FreeMem: " . sprintf("%.0f MB", $free);
  135.    return $ret;
  136. }
  137.  
  138. sub disk_info() {
  139.    my $ret = '';
  140.    my $df = `df -lm --total`;
  141.    my @split_up = split(/\n/, $df);
  142.    foreach my $i (@split_up) {
  143.       chomp($i);
  144.       $i =~ s/(\s+|\t+)/ /g;
  145.       my @sub_split = split(/\s/, $i);
  146.       if($sub_split[0] eq "total")
  147.       {
  148.      $ret .= "Disk Size: " . $sub_split[3] . "MB(" . sprintf("%.1f", int($sub_split[3]) / 1000) . "GB)  Disk Used: " . $sub_split[2] . "MB(" . sprintf("%.1f", int($sub_split[2]) / 1000) . "GB)  " . $sub_split[4] . " Usage";
  149.       }
  150.    }
  151.    return $ret;
  152. }
  153.  
  154. sub video_info() {
  155.    my $vga = `lspci | grep -i vga`;
  156.    $vga = (split(/:/, $vga))[-1];
  157.    $vga =~ s/^\s+//;
  158.    $vga =~ s/\s+$//;
  159.    $vga =~ s/\[/(/;
  160.    $vga =~ s/\]/)/;
  161.    if($vga =~ m/^ATI\s/i) {
  162.       $vga =~ s/^ATI/\x0300,05\x02 ATI \x02\x03/i;
  163.    }
  164.    elsif($vga =~ m/^NVIDIA\s/i) {
  165.       $vga =~ s/^NVIDIA/\x0301,09\x02@\x02\x03\x0300,01\x02NVIDIA \x02\x03/i;
  166.    }
  167.    return $vga;
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement