Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use warnings;
- use strict;
- use utf8;
- use Xchat ':all';
- Xchat::hook_command('sysinfo', 'sysinfo');
- sub sysinfo {
- if(defined $_[0][1]) {
- sysinfo_l();
- return undef;
- }
- #my $format = "\x0F\x0302os\x03[ %os% ] \x0302distro\x03[ %distro% ] \x0302host\x03[ %machine% ] \x0302cpu\x03[ %cpu% ] \x0302battery\x03[ %battery% ] ";
- my $format = "\x0F\x0302os\x03[ %os% ] \x0302distro\x03[ %distro% ] \x0302host\x03[ %machine% ] \x0302cpu\x03[ %cpu% ] ";
- $format .= "\x0302mem\x03[ %mem% ] \x0302disk\x03[ %disk% ] \x0302video\x03[ %video% ] \x0302sound\x03[ %sound% ] ";
- $format .= "\x0302network\x03[ %network% ] \x0302temp\x03[ %temp% ] \x0302uptime\x03[ %uptime% ]";
- my $os = get_os(); $format =~ s/\%os\%/$os/;
- my $distro = get_distro(); $format =~ s/\%distro\%/$distro/;
- my $cpu = get_cpu(); $format =~ s/\%cpu\%/$cpu/;
- my $name = machine_name(); $format =~ s/\%machine\%/$name/;
- # my $battery = batteryinfo(); $format =~ s/\%battery\%/$battery/;
- my $mem = mem_info(); $format =~ s/\%mem\%/$mem/;
- my $disk = disk_info(); $format =~ s/\%disk\%/$disk/;
- my $video = video_info(); $format =~ s/\%video\%/$video/;
- my $audio = sound_info(); $format =~ s/\%sound\%/$audio/;
- my $net = network_info(); $format =~ s/\%network\%/$net/;
- my $temper = temp_info(); ($temper eq 'null') ? $format =~ s/\x0302temp\x03\[\s\%temp\%\s\]// : $format =~ s/\%temp\%/$temper/;
- my $uptime = uptime(); $format =~ s/\%uptime\%/$uptime/;
- Xchat::command('MSG ' . Xchat::get_info('channel') . ' ' . $format);
- }
- sub get_os {
- my $temp = `uname -srm`;
- chomp($temp);
- return $temp;
- }
- sub get_distro {
- my $temp = `cat /etc/issue`;
- $temp = (split(/\\/, $temp))[0];
- $temp =~ s/\s+$//;
- return $temp;
- }
- sub machine_name() {
- my $temp = `uname -n`;
- chomp($temp);
- return $temp;
- }
- sub get_cpu() {
- my @temp = split(/\n/, `cat /proc/cpuinfo`);
- my $ret = '';
- my $model; my $mhz; my $cores;
- foreach my $i (@temp) {
- my @tmp = split(/:/, $i);
- my $label = $tmp[0];
- next unless defined $label;
- $label =~ s/\s//g;
- $label =~ s/.[^A-z]//g;
- if ($label eq 'modelname') {
- $model = (split(/:\s/, $i))[1];
- }
- elsif($label eq 'cpuMHz') {
- $mhz = (split(/:\s/, $i))[1];
- }
- elsif($label eq 'cpucores') {
- $cores = (split(/:\s/, $i))[1];
- }
- }
- $ret .= $model . ' ';
- $ret .= sprintf("%.1f", $mhz / 1000) . 'GHz ';
- $ret .= $cores . ' cores';
- return $ret;
- }
- sub strmult {
- my $ret = '';
- for(my $i = 0; $i ne $_[1]; $i++) { $ret .= $_[0]; }
- return $ret;
- }
- sub batteryinfo {
- my @battery = split(/\,/, (split(/\s/, `acpi`, 3))[2], 3);
- $battery[1] =~ s/\s//g;
- my @temp = split(//, $battery[1]);
- chomp($battery[-1]);
- my $temp = @temp;
- if($temp eq 2) {
- return "\00307,01[\003\00303,01|\003\00305,01---------\003\00307,01]: \003\00305,01" . $battery[1] . " \003";
- }
- elsif($temp eq 4) {
- if(defined $battery[2]) {
- return "\00300,01[\003\00303,01||||||||||\003\00300,01]: \003\00309,01" . $battery[1] . " \003";
- }
- else {
- return "\00300,01[\003\00303,01||||||||||\003\00300,01]: \003\00309,01" . $battery[1] . " \003";
- }
- }
- else {
- my $prec = int($temp[0]);
- my $red = 10 - $prec;
- my $ret = '';
- $ret .= "\00300,01[\003\00303,01" . strmult('|', $prec) . "\003\00305,01" . strmult('-', $red) . "\003\00300,01]: \003";
- if($prec < 6) {
- if($prec < 3) {
- $ret .= "\00305,01";
- }
- else {
- $ret .= "\00308,01";
- }
- }
- else {
- if($prec < 9) {
- $ret .= "\00303,01";
- }
- else {
- $ret .= "\00309,01";
- }
- }
- $ret .= $battery[1];
- $ret .= " \003\x0F";
- return $ret;
- }
- }
- sub mem_info() {
- my $ret = '';
- my @tmp = split(/\n/, `cat /proc/meminfo`);
- my $total = $tmp[0];
- my $free = $tmp[1];
- $total =~ m/.+?\s+(\d+)\s/;
- $total = int($1);
- $total /= 1000;
- $free =~ m/.+?\s+(\d+)\s/;
- $free = int($1);
- $free /= 1000;
- $ret .= "Total/Free: " . sprintf("%.0fMB", $total) . "/" . sprintf("%.0fMB", $free);
- return $ret;
- }
- sub disk_info() {
- my $ret = '';
- my $df = `df -lm --total`;
- my @split_up = split(/\n/, $df);
- foreach my $i (@split_up) {
- chomp($i);
- $i =~ s/(\s+|\t+)/ /g;
- my @sub_split = split(/\s/, $i);
- if($sub_split[0] eq "total")
- {
- $ret .= "Size/Used: " . sprintf("%.1f", int($sub_split[3]) / 1000) . "GB/" . sprintf("%.1f", int($sub_split[2]) / 1000) . "GB";
- }
- }
- return $ret;
- }
- sub video_info() {
- my $vga = `lspci | grep -i vga`;
- $vga = (split(/\n/, $vga))[0];
- $vga = (split(/:/, $vga))[-1];
- $vga =~ s/^\s+//;
- $vga =~ s/\s+$//;
- $vga =~ s/\[/(/;
- $vga =~ s/\]/)/;
- if($vga =~ m/^ATI\s/i) {
- $vga =~ s/^ATI/\x0300,05\x02 ATI \x02\x03/i;
- }
- elsif($vga =~ m/^NVIDIA\s/i) {
- $vga =~ s/^NVIDIA/\x0301,09\x02@\x02\x03\x0300,01\x02NVIDIA \x02\x03/i;
- }
- return $vga;
- }
- sub sound_info() {
- my @sound = split(/\n/, `lspci | grep -i audio`);
- my $audio = $sound[0];
- $audio = (split(' ', $audio, 2))[1];
- $audio =~ s/^\s+//;
- $audio =~ s/\s+$//;
- $audio =~ s/\[/(/g;
- $audio =~ s/\]/)/g;
- return $audio;
- }
- sub network_info() {
- my $ret = '';
- if(`lspci | grep -i network`) {
- my @net = split(/\n/, `ifconfig wlan0`);
- foreach my $line (@net) {
- $line =~ s/^(\s+|\t+)//;
- if($line =~ /^rx bytes:/i) {
- Xchat::print($line);
- $line =~ m/.+?\((.+?)\).+?\((.+?)\)/;
- my $rx = $1;
- my $tx = $2;
- $ret .= 'wlan0 RX/TX Bytes: ' . $rx . '/' . $tx;
- }
- next;
- }
- }
- else {
- my @net = split(/\n/, `ifconfig eth0`);
- foreach my $line (@net) {
- if($line =~ /^rx bytes:/i) {
- Xchat::print($line);
- $line =~ m/.+?\((.+?)\).+?\((.+?)\)/;
- my $rx = $1;
- my $tx = $2;
- $ret .= 'eth0 RX/TX Bytes: ' . $rx . '/' . $tx;
- }
- next;
- }
- }
- return $ret;
- }
- sub temp_info() {
- if(!system('acpi')) {}
- else { return 'null'; }
- return (split(/\s/, `acpi -tf`))[3] . '°F';
- }
- sub uptime() {
- my $up = `uptime`;
- $up =~ s/^\s+//g;
- my @up_a = split(/\s/, $up);
- my $up_a = @up_a;
- if($up_a == 10) {
- my $ret = (split(/\s/, $up))[2];
- $ret =~ s/,//g;
- return $ret . ' hours';
- }
- else {
- my $ret = (split(/\s/, $up))[2] . ' ' . (split(/\s/, $up))[3] . 'hours';
- $ret =~ s/,//g;
- return $ret;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement