rendered paste body#!/usr/bin/perl
IRC::add_command_handler("pcstats", "pcstats");
sub pcstats
{
# Generic vars.
my $buffer;
my $output;
my $txtformat = "\002";
# CPU Info vars.
my $cpumhz;
my $version = `uname -r`;
my $kernel = `uname`;
my $cpumodel;
my $cpuTemp = `cat /proc/acpi/thermal_zone/THRM/temperature`;
# Inet info vars.
my @inetconn;
my @pppifaces = `/sbin/ifconfig |grep ppp`;
my $bytesul;
my $bytesdl;
my $mbytesul;
my $mbytesdl;
# Disk info vars.
my @disks = `df -h`;
my $devname;
my $devsize;
my $devuse;
my $devmount;
# Mem info vars.
my @meminfo = `free`;
my $freemem;
my $usedmem;
my $freememp;
my $usedmemp;
# X Resolution.
my $xres = `xdpyinfo -display :0 |grep dimensions`;
# Proc info vars.
my $procs = `ps ax |wc -l`;
# Uptime.
my $uptime = `uptime`;
my @fuptime;
my $loadavg = `uptime`;
### CPU Info function. ################################################
chomp ( $version, $kernel, $cpuTemp );
open (CPUINFO, "</proc/cpuinfo");
while ($buffer = <CPUINFO>) {
if ($buffer =~ /model name/) {
(undef, $cpumodel) = split /: /, $buffer;
chomp $cpumodel;
}
if ($buffer =~ /cpu MHz/) {
(undef, $cpumhz) = split /: /, $buffer;
chomp $cpumhz;
}
} close (CPUINFO);
$output = "CPU$txtformat:$txtformat\ $txtformat\[$txtformat$cpumodel\ $txtformat\@$txtformat\ $cpumhz MHz, $cpuTemp$txtformat\]$txtformat.\ $kernel\ $txtformat\[$tx
tformat$version$txtformat\]$txtformat.\ Disks$txtformat:$txtformat";
### Internet connections (ppp) function #######################################
foreach $iface (@pppifaces) {
($iface) = split / /, $iface;
@inetconn = `/sbin/ifconfig $iface`;
foreach $conn (@inetconn) {
if ($conn =~ /RX bytes/) {
$bytesdl = $1 if $conn =~ /RX bytes:(\d+)/;
$bytesul = $1 if $conn =~ /TX bytes:(\d+)/;
$mbytesdl = sprintf ("%.2f", $bytesdl/1048576);
$mbytesul = sprintf ("%.2f", $bytesul/1048576);
$output .= " Internet connection(s)\cB: [\cB$iface\cB:\cB $bytesul bytes up \cB(\cB$mbytesul Mb\cB)\cB,";
$output .= " $bytesdl bytes down \cB(\cB$mbytesdl Mb\cB)]\cB.";
}
}
}
foreach $disk (@disks) {
$disk =~ s/\s+/ /g;
next if $disk =~ /^none/ or $disk =~ /Filesystem/;
($devname, $devsize, undef, undef, $devuse, $devmount) = split / /, $disk;
$output .= " \cB[\cB$devname\cB:\cB $devsize \cB-\cB $devuse used\cB]\cB.";
}
### Memory and swap information ###############################################
foreach $line (@meminfo) {
if ($line =~ /cache:/) {
$line =~ s/\s+/ /g;
(undef, undef, $memused, $memfree) = split / /, $line;
$memusedp = sprintf ("%.2f", $memused*100/($memused+$memfree));
$memfreep = sprintf ("%.2f", $memfree*100/($memfree+$memused));
$output .= " RAM\cB: [\cBUsed: $memused \cB(\cB$memusedp\%\cB)\cB - Free: $memfree \cB(\cB$memfreep\%\cB)]\cB.";
}
}
### X Resolution info. #######################################################
$xres =~ s/dimensions: (.*)pixels.*/$1/;
$xres =~ s/ //g;
chomp $xres;
$output .= " X Resolution\cB: [\cB$xres\cB]\cB.";
### Number of processes function ##############################################
chomp $procs;
$procs =~ s/\s+//g;
$output .= " Procs running\cB: [\cB$procs\cB]\cB.";
### Uptime information. #######################################################
chomp $uptime;
$uptime =~ s/.*up (.*)/$1/;
@fuptime = split /,/,$uptime;
$output .= " Uptime\cB: [\cB$fuptime[0]";
if ($fuptime[1] !~ /users?/) {
$fuptime[1] =~ s/ //g;
$output .= ", $fuptime[1]";
}
$output .= "\cB]\cB.";
### Load average information. ################################################
$loadavg =~ s/.*load average: (.*)/$1/;
chomp $loadavg;
$output .= " Load average\cB: [\cB$loadavg\cB]\cB.";
### Print the data to IRC. ####################################################
IRC::register ("PCStats", "0.1", "", "");
IRC::command ("$output");
# Done.
}