commit - 5a1dcdb1d7095f8cde74538cac7c9c2bee7fb14f
commit + b14f075560c732e04e3ad1c2e28083b5df2b4d11
blob - fef95cdc5619d8018519ad0c6b8f1a8428758037
blob + 60be578d6cdbcda537d3d71fbfb251f7473cc7c9
--- README.md
+++ README.md
-# sysinfo-pl
+# sysinfo.pl
-A perl system information display script originally written by David Rudie and Travis Morgan (imbezol)
\ No newline at end of file
+A perl system information display script originally written by David Rudie and Travis Morgan (imbezol)
+
+- No external dependencies (unless your system doesn't ship with Perl)
+- Supports Darwin, FreeBSD, DragonFly BSD, GNU/Linux, NetBSD, OpenBSD, IRIX, SunOS
+
+## Running
+
+- Add your NIC and NIC name (@nic, @nicname)
+- ````./sysinfo.pl````
+
+## Example outputs
+
+Arch GNU/Linux:
+
+````
+Hostname: voyager - OS: Linux 6.16.8-arch3-1/x86_64 - Distro: Arch - CPU: 8 x
+11th Gen Intel Core i7-1185G7 (4300.000 MHz) - Processes: 347 - Uptime: 2d 2h 38m
+- Users: 1 - Load Average: 0.44 - Memory Usage: 8734.73MB/31799.42MB (27.47%) -
+FS Usage: 706.99GB/968.33GB (73.01%)
+````
+
+OpenBSD 7.7/amd64:
+
+````
+Hostname: voyager - OS: OpenBSD 7.7/amd64 - CPU: 4 x Intel Core i5-6200U 2194.89
+MHz, 06-4e-03, patch 000000f00 - Processes: 56 - Uptime: 21m - Users: 2 - Load
+Average: 0.99 - Memory Usage: 155.00MB/8048.02MB (1.93%) - FS Usage:
+5.95GB/452.09GB (1.32%)
+````
blob - 147d812b01ff1d0bb0fa683e7cfedff5447b2515 (mode 755)
blob + /dev/null
Binary files sysinfo-3.pl and /dev/null differ
blob - /dev/null
blob + 147d812b01ff1d0bb0fa683e7cfedff5447b2515 (mode 755)
Binary files /dev/null and archive/sysinfo-3.pl differ
blob - /dev/null
blob + 1f795a1f896d519b1e6686fefc434af9da023f0e (mode 755)
--- /dev/null
+++ archive/sysinfo-modded.pl
+#!/usr/bin/perl -w
+#
+# Copyright (c) 2002-2005 David Rudie
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# Several additions and fixes to this script were contributed by Travis
+# Morgan and therefore are Copyright (c) 2003-2006 Travis Morgan
+#
+# If you notice any bugs including spacing issues, wrong detection of hardware,
+# obvious features missing, etc, we both want to hear about them. If you make
+# this script work on other operating systems and/or architectures please send
+# either of us your patches. My e-mail address is d.rudie@gmail.com and
+# Travis Morgan's e-mail address is imbezol@criticaldamage.com
+#
+# The latest version can be obtained from either http://www.inexistent.com/ or
+# http://imbezol.org/sysinfo/
+#
+# Now maintained (as of 2020) by Danyal Samak (int16h)
+#
+# You can also reach Travis in #crd on efnet.
+# Fixed kernel versioning to support 5.x kernel
+# NOW it suits my needs a little better. =)
+
+use POSIX qw(floor);
+use strict;
+
+
+# Set up the arrays and variables first.
+use vars qw(
+ @arr
+ @arr1
+ @arr2
+ $cpu
+ @cpu
+ @cpuinfo
+ $data
+ $distro
+ $distrov
+ @distros
+ @data
+ $df
+ $vgs
+ @dmesgboot
+ @hinv
+ @meminfo
+ $mhz
+ @mhz
+ $model
+ @netdev
+ @netstat
+ @nic
+ @nicname
+ $realdistro
+ $smp
+ @smp
+ $stream
+ $sysctl
+ @uptime
+ $var
+ $vara
+ $varb
+ $varc
+ $vard
+ $varh
+ $varm
+ $varp
+ $varx
+ $vary
+ $varz
+ $col1
+ $col2
+);
+
+
+# Specify your NIC interface name (eth0, rl0, fxp0, etc) and a name for it.
+#
+# Example: @nic = ('eth0', 'eth1');
+# @nicname = ('External', 'Internal');
+#
+# NOTE: If you set one then you HAVE to set the other.
+@nic = ('');
+@nicname = ('');
+
+$col1 = '';
+$col2 = '';
+
+# These are the default settings for which information gets displayed.
+# 0 = Off; 1 = On
+my $useShortHostname = 1;
+
+my $showHostname = 1;
+my $showOS = 1;
+my $showCPU = 1;
+my $showProcesses = 1;
+my $showUptime = 1;
+my $showUsers = 1;
+my $showLoadAverage = 1;
+my $showBattery = 0; # Requires APM and /proc/apm or /proc/acpi/battery/
+my $showMemoryUsage = 1;
+my $showDiskUsage = 1;
+my $showLVMUsage = 0;
+my $showNetworkTraffic = 0;
+my $showDistro = 1;
+
+###############################################
+### Nothing below here should need changed. ###
+###############################################
+
+my $sysinfoVer = '2.81.21';
+my $sysinfoDate = 'Sep 7, 2012, 21:43 MDT';
+
+my $os = `uname -s`; chomp($os);
+my $osn = `uname -n`; chomp($osn);
+if($useShortHostname) {
+ $osn =~ s/([^\.]*).*/$1/;
+}
+my $osv = `uname -r`; chomp($osv);
+my $osm = `uname -m`; chomp($osm);
+my $uname = "$os $osv/$osm";
+
+my $darwin = 1 if $os =~ /^Darwin$/;
+my $freebsd = 1 if $os =~ /^FreeBSD$/;
+my $dragonfly = 1 if $os =~ /^DragonFly$/;
+my $linux = 1 if $os =~ /^Linux$/;
+my $netbsd = 1 if $os =~ /^NetBSD$/;
+my $openbsd = 1 if $os =~ /^OpenBSD$/;
+my $irix = 1 if $os =~ /^IRIX$/;
+my $irix64 = 1 if $os =~ /^IRIX64$/;
+my $sun = 1 if $os =~ /^SunOS$/;
+
+
+my $alpha = 1 if $osm =~ /^alpha$/;
+my $arm = 1 if $osm =~ /^arm$/;
+my $i586 = 1 if $osm =~ /^i586$/;
+my $i686 = 1 if $osm =~ /^i686$/;
+my $ia64 = 1 if $osm =~ /^ia64$/;
+my $mips = 1 if $osm =~ /^mips$/;
+my $parisc = 1 if $osm =~ /^parisc$/;
+my $parisc64 = 1 if $osm =~ /^parisc64$/;
+my $ppc = 1 if $osm =~ /^ppc$/;
+my $ppc64 = 1 if $osm =~ /^ppc64$/;
+my $s390 = 1 if $osm =~ /^s390$/;
+my $s390x = 1 if $osm=~ /^s390x$/;
+my $sh = 1 if $osm=~ /^sh/;
+my $sparc = 1 if $osm =~ /^sparc$/;
+my $sparc64 = 1 if $osm =~ /^sparc64$/;
+my $x86_64 = 1 if $osm =~ /^x86_64$/;
+
+
+my $d7 = 1 if $darwin && $osv =~ /^7\.\d+\.\d+/;
+my $d8 = 1 if $darwin && $osv =~ /^8\.\d+\.\d+/;
+my $d9 = 1 if $darwin && $osv =~ /^9\.\d+\.\d+/;
+my $l26 = 1 if $linux && $osv =~ /^2\.6/;
+my $l3 = 1 if $linux && $osv =~ /^2\.7/ || $osv =~ /^3\./ || $osv =~ /^[3-5]\./;
+my $f_old = 1 if $freebsd && $osv =~ /^4\.1-/ || $osv =~ /^4\.0-/ || $osv =~ /^3/ || $osv =~ /^2/;
+
+my $progArgs = $ARGV[0];
+if($progArgs) {
+ if($progArgs eq '-v' || $progArgs eq '--version') {
+ print "SysInfo v$sysinfoVer $sysinfoDate\n";
+ print "Written by David Rudie <d.rudie\@gmail.com> and Travis Morgan <imbezol\@criticaldamage.com>\n";
+ exit -1;
+ }
+}
+
+if($linux) {
+ @cpuinfo = &openfile("/proc/cpuinfo");
+ @meminfo = &openfile("/proc/meminfo");
+ @netdev = &openfile("/proc/net/dev");
+ @uptime = &openfile("/proc/uptime");
+
+ $df = 'df -lkP';
+ $vgs = 'vgs --trustcache --unbuffered --noheadings -o vg_size,vg_free --nosuffix --units k 2>&1 | grep -v WARNING';
+
+ if($showDistro) {
+ @distros = (
+ "Arch", "/etc/arch-release",
+ "Gentoo", "/etc/gentoo-release",
+ "Fedora Core", "/etc/fedora-release",
+ "SUSE", "/etc/SuSE-release",
+ "Slackware", "/etc/slackware-version",
+ "Cobalt", "/etc/cobalt-release",
+ "Debian", "/etc/debian_version",
+ "Mandrake", "/etc/mandrake-release",
+ "Mandrake", "/etc/mandrakelinux-release",
+ "Yellow Dog", "/etc/yellowdog-release",
+ "OpenFiler", "/etc/distro-release",
+ "Red Hat", "/etc/redhat-release"
+ );
+ $distro = "";
+ $distrov = "";
+ do {
+ if (-e $distros[1]) {
+ $distro = $distros[0];
+ $distrov = `cat $distros[1] | head -n 1`;
+ chomp($distrov);
+ $distrov =~ s/[^0-9]*([0-9.]+)[^0-9.]{0,1}.*/$1/;
+ }
+ shift @distros; shift @distros;
+ } until (scalar @distros == 0) || (length $distro > 0);
+ if ($distro eq "Debian") {
+ if (-e "/etc/lsb-release") {
+ $realdistro = `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION`;
+ if ($realdistro ne "") {
+ chomp $realdistro;
+ $realdistro =~ s/DISTRIB_DESCRIPTION="//;
+ $realdistro =~ s/"$//;
+ $distro = $realdistro;
+ $distrov = $realdistro;
+ $distro =~ s/ [0-9.]+.*$//;
+ $distrov =~ s/$distro //;
+ }
+ }
+ }
+ if ($distro eq "Red Hat") {
+ $realdistro = `cat /etc/redhat-release`;
+ if ($realdistro =~ "^CentOS") {
+ $distro = "CentOS";
+ }
+ }
+ if ($distro eq "SUSE") {
+ $realdistro = `cat /etc/SuSE-release`;
+ if ($realdistro =~ "^openSUSE") {
+ $distro = "openSUSE";
+ }
+ elsif ($realdistro =~ "^SUSE Linux Enterprise Server") {
+ $distro = "SLES";
+ }
+ elsif ($realdistro =~ "^SUSE Linux Enterprise Desktop") {
+ $distro = "SLED";
+ }
+ }
+ }
+} elsif($irix || $irix64) {
+ @hinv = `hinv`;
+} else {
+ @dmesgboot = &openfile("/var/run/dmesg.boot");
+ if($sun) {
+ @netstat = `netstat -in`;
+ } else {
+ @netstat = `netstat -ibn`;
+ }
+ if($darwin) {
+ $sysctl = '/usr/sbin/sysctl';
+ } else {
+ $sysctl = '/sbin/sysctl';
+ }
+ if($arm) {
+ $df = 'df -k';
+ } elsif($f_old) {
+ $df = 'df -k';
+ } else {
+ $df = 'df -lk';
+ }
+
+}
+
+if($showCPU) {
+ if($freebsd || $dragonfly) {
+ if($alpha) {
+ @cpu = grep(/^COMPAQ/, @dmesgboot);
+ $cpu = join("\n", $cpu[0]);
+ } else {
+ @cpu = grep(/CPU: /, @dmesgboot);
+ $cpu = join("\n", @cpu);
+ $cpu =~ s/Warning:.*disabled//;
+ @cpu = split(/CPU: /, $cpu);
+ $cpu = $cpu[1];
+ $cpu =~ s/\s\d\.\d\dGHz//g;
+ $cpu =~ s/\s*[^\s]*-class CPU//gi;
+ $cpu =~ s/(\S*)-MHz/$1 MHz/gi;
+ $cpu =~ s/@\s+//;
+ chomp($cpu);
+ $smp = `$sysctl -n hw.ncpu`;
+ chomp($smp);
+ if ( $smp eq 1 ) {
+ $smp = "";
+ }
+ }
+ }
+ if($netbsd) {
+ if($alpha) {
+ @cpu = grep(/^COMPAQ/, @dmesgboot);
+ $cpu = join("\n", $cpu[0]);
+ @cpu = split(/, /, $cpu);
+ $cpu = $cpu[0];
+ } else {
+ @cpu = grep(/^v?cpu0.*MHz/, @dmesgboot);
+ @cpu = grep(!/apic/, @cpu);
+ @cpu = split(/: /,$cpu[0]);
+ $cpu = $cpu[1];
+ $cpu =~ s/, id.*//;
+ $mhz = $cpu;
+ $mhz =~ s/.* ([.0-9]+) *MHz.*$/$1/;
+ $cpu =~ s/,.*//;
+ $cpu = "$cpu ($mhz MHz)";
+ $smp = `$sysctl -n hw.ncpu`;
+ chomp($smp);
+ if ( $smp eq 1 ) {
+ $smp = "";
+ }
+ }
+ }
+ if($openbsd) {
+ @cpu = grep(/cpu0: /, @dmesgboot);
+ @cpu = grep(/[M|G]Hz/, @cpu);
+ $cpu = join("\n", @cpu);
+ @cpu = split(/: /, $cpu);
+ $cpu = $cpu[1];
+ $cpu =~ s/, / /;
+ $cpu =~ s/([0-9.]* [MG]Hz)$/($1)/;
+ $smp = `$sysctl -n hw.ncpu`;
+ chomp($smp);
+ if ( $smp eq 1 ) {
+ $smp = "";
+ }
+ }
+ if($irix || $irix64) {
+ @cpu = grep(/CPU:/, @hinv);
+ $cpu = join("\n", @cpu);
+ $cpu =~ s/^.*(R[0-9]*) .*$/$1/;
+ @mhz = grep(/MHZ/, @hinv);
+ $mhz = join("\n", @mhz);
+ $mhz = $mhz[0];
+ $mhz =~ s/^.* ([0-9]*) MHZ.*$/$1/;
+ @smp = grep(/ IP/, @hinv);
+ $smp = $smp[0];
+ $smp =~ s/^([0-9]*) .*$/$1/;
+ chomp($smp);
+ chomp($cpu);
+ chomp($mhz);
+ $cpu = "MIPS $cpu ($mhz MHz)";
+ }
+ if($linux) {
+ if($alpha) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $model = &cpuinfo("cpu model\\s+: ");
+ $model = "$model (" . &cpuinfo("system type") . ")";
+ $mhz = &cpuinfo("cycle frequency \\[Hz\\]\\s+: ");
+ $mhz = ($mhz / 1000000);
+ $mhz = sprintf("%.2f", $mhz);
+ $cpu = "$cpu $model ($mhz MHz)";
+ $smp = &cpuinfo("cpus detected\\s+: ");
+ }
+ if($arm) {
+ $cpu = &cpuinfo("Processor\\s+: ");
+ }
+ if($i686 || $i586 || $x86_64) {
+ $cpu = &cpuinfo("model name\\s+: ");
+ $cpu =~ s/(.+) CPU family\t+\d+MHz/$1/g;
+ #$cpu =~ s/(.+) CPU .+GHz/$1/g;
+ $mhz = &cpuinfo("cpu MHz\\s+: ");
+ $mhz =~ s/^\s*//g;
+ $cpu = "$cpu ($mhz MHz)";
+ @smp = grep(/processor\s+: /, @cpuinfo);
+ $smp = scalar @smp;
+ }
+ if($ia64) {
+ $cpu = &cpuinfo("vendor\\s+: ");
+ $model = &cpuinfo("family\\s+: ");
+ $mhz = &cpuinfo("cpu MHz\\s+: ");
+ $mhz = sprintf("%.2f", $mhz);
+ $cpu = "$cpu $model ($mhz MHz)";
+ @smp = grep(/processor\s+: /, @cpuinfo);
+ $smp = scalar @smp;
+ }
+ if($mips) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $model = &cpuinfo("cpu model\\s+: ");
+ $cpu = "$cpu $model";
+ }
+ if($parisc || $parisc64) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $model = &cpuinfo("model name\\s+: ");
+ $mhz = &cpuinfo("cpu MHz\\s+: ");
+ $mhz = sprintf("%.2f", $mhz);
+ $cpu = "$model $cpu ($mhz MHz)";
+ @smp = grep(/processor\s+: /, @cpuinfo);
+ $smp = scalar @smp;
+ }
+ if($ppc || $ppc64) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $mhz = &cpuinfo("clock\\s+: ");
+ $mhz =~ s/^(\d+\.\d{3})\d*\s*MHz/$1 MHz/;
+ $cpu =~ s/, altivec supported//;
+ if($cpu =~ /^(PPC)*9.+/) {
+ $model = "IBM PowerPC G5";
+ } elsif($cpu =~ /^74.+/) {
+ $model = "Motorola PowerPC G4";
+ } else {
+ $model = "IBM PowerPC G3";
+ }
+ $cpu = "$model $cpu ($mhz)";
+ $smp = `/bin/grep -c -e '^processor\\s*:\\s*[0-9]\\+' /proc/cpuinfo`; chomp($smp);
+ }
+ if($s390 || $s390x) {
+ $cpu = &cpuinfo("vendor_id\\s+: ");
+ $smp = &cpuinfo("processors\\s+: ");
+ }
+ if($sh) {
+ $cpu = &cpuinfo("cpu family\\s+: ");
+ $model = &cpuinfo("cpu type\\s+: ");
+ $mhz = &cpuinfo("cpu_clk\\s+: ");
+ $cpu = "$cpu $model ($mhz MHz)";
+ }
+
+ if($sparc || $sparc64) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $model = &cpuinfo("type\\s+: ");
+ $cpu = "$model $cpu";
+ $mhz = &cpuinfo("Cpu0ClkTck\\s+: ");
+ $mhz = (hex($mhz) / 1000000);
+ $cpu = "$cpu ($mhz MHz)";
+ $smp = &cpuinfo("ncpus active\\s+: ");
+ }
+ } elsif($sun) {
+ my $osp = `uname -p`; chomp($osp);
+ if($osv =~ /^5\.11/ || ($osv =~ /^5\.10/ && $osp =~ "i386")) {
+ $cpu = `/usr/sbin/psrinfo -vp | tail -1`; chomp($cpu);
+ $mhz = `/usr/sbin/psrinfo -vp | grep MHz | awk '{ print "(" \$(NF-1) " " \$NF}' | tail -1`; chomp($mhz);
+ $cpu = "$cpu $mhz";
+ $smp = `/usr/sbin/psrinfo -p`; chomp($smp);
+ $cpu =~ s/^\s*//;
+ }
+ if($osp =~ "sparc") {
+ $cpu = `/usr/platform/${osm}/sbin/prtdiag | head -1`; chomp($cpu);
+ $cpu =~ s/.*${osm} //;
+ $smp = `/usr/sbin/psrinfo | wc -l`;
+ }
+ } elsif($darwin) {
+ $cpu = `hostinfo | grep 'Processor type' | cut -f2 -d':'`; chomp($cpu);
+ $cpu =~ s/^\s*(.+)\s*$/$1/g;
+ if($cpu =~ /^ppc7.+/) {
+ $cpu = "Motorola PowerPC G4";
+ }
+ if($cpu =~ /^ppc970/) {
+ $cpu = "Motorola PowerPC G5";
+ }
+ if ($cpu =~ /^i486/) {
+ $cpu = `sysctl -n machdep.cpu.brand_string`; chomp($cpu);
+ }
+ $mhz = `$sysctl -n hw.cpufrequency`; chomp($mhz);
+ $mhz = sprintf("%.2f", $mhz / 1000000);
+ $cpu = "$cpu ($mhz MHz)";
+ $smp = `hostinfo | grep "physically available" | cut -f1 -d' '`; chomp($smp);
+ }
+ if($smp && $smp gt 1) {
+ $cpu = "$smp x $cpu";
+ }
+ $cpu =~ s/\s*@\s*\d*\.\d*\s*GHz//;
+ $cpu =~ s/^\s+//;
+ $cpu =~ s/\(R\)//gi;
+ $cpu =~ s/\(tm\)//gi;
+ $cpu =~ s/\([^(]*GenuineIntel[^)]*\)//;
+ $cpu =~ s/\s*processor//gi;
+ $cpu =~ s/\s*CPU//gi;
+ $cpu =~ s/ +/ /g;
+}
+
+sub batteryacpi {
+ my $data = "";
+ my ($bfull, $bcur, @dirs, $dir);
+
+ if (opendir(DIR, '/proc/acpi/battery/')) {
+ @dirs = grep { !/^\./ } readdir (DIR);
+ closedir(DIR);
+ foreach $dir (@dirs) {
+ $bfull = "";
+ $bcur = "";
+ if(open(FD, '/proc/acpi/battery/'.$dir.'/info')) {
+ while (<FD>) {
+ if (/^last full capacity:\ +([0-9]+)/) {
+ $bfull = $1;
+ }
+ }
+ close(FD);
+ }
+ if(open(FD, '/proc/acpi/battery/'.$dir.'/state')) {
+ while (<FD>) {
+ if (/^remaining capacity:\ +([0-9]+)/) {
+ $bcur = $1;
+ }
+ }
+ close(FD);
+ }
+ if ($bfull ne "") {
+ if ($data ne "") {
+ $data = $data." ";
+ }
+ $data = $data.sprintf("%.0f",($bcur/$bfull*100));
+ $data = $data."%";
+ }
+ }
+ }
+ return $data;
+}
+
+sub battery {
+ $data = "";
+
+ if ( -f '/proc/apm') {
+ if(open(FD, '/proc/apm')) {
+ while($stream = <FD>) {
+ $data .= $stream;
+ @data = split(/\n/, $data);
+ }
+ close(FD);
+ }
+ $data = $data[0];
+ $data =~ s/.+\s(\d+%).+/$1/;
+ } elsif ( -d '/proc/acpi/battery') {
+ $data=&batteryacpi;
+ }
+ return $data;
+}
+
+sub cpuinfo {
+ my $string = shift;
+ @arr = grep(/$string/, @cpuinfo);
+ $var = join("\n", $arr[0]);
+ @arr = split(/: /, $var);
+ $var = $arr[1];
+ return $var;
+}
+
+sub diskusage {
+ if($irix || $irix64) {
+ $vara = `$df | grep dev | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vara);
+ $vard = `$df | grep dev | awk '{ sum+=\$4 / 1024 / 1024}; END { print sum }'`; chomp($vard);
+ } elsif($sun) {
+ $vara = `$df | grep -v swap | grep -v libc | awk '{ sum+=\$2 / 1024 / 1024}; END { print sum }'`; chomp($vara);
+ $vard = `$df | grep -v swap | grep -v libc | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vard);
+ } else {
+ $vara = `$df | egrep "dev|rpool" | awk '{ sum+=\$2 / 1024 / 1024}; END { print sum }'`; chomp($vara);
+ $vard = `$df | egrep "dev|rpool" | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vard);
+ }
+ if ($vara eq "" or $vara == 0 ) {
+ return "0GB/0GB (0%)";
+ } else {
+ $varp = sprintf("%.2f", $vard / $vara * 100);
+ $vara = sprintf("%.2f", $vara);
+ $vard = sprintf("%.2f", $vard);
+ return $vard."GB/".$vara."GB ($varp%)";
+ }
+}
+
+sub lvmusage {
+ $vara = 0;
+
+ if ($linux) {
+ $vara = `$vgs | awk '{ sum+=\$1 / 1024 / 1024}; END { print sum }'`; chomp($vara);
+ $vard = `$vgs | awk '{ used =\$1-\$2; sum+=used / 1024 / 1024}; END { print sum }'`; chomp($vard);
+ }
+
+ if ($vara eq "" or $vara == 0 ) {
+ return "0GB/0GB (0%)";
+ } else {
+ $varp = sprintf("%.2f", $vard / $vara * 100);
+ $vara = sprintf("%.2f", $vara);
+ $vard = sprintf("%.2f", $vard);
+ return $vard."GB/".$vara."GB ($varp%)";
+ }
+}
+
+
+sub loadaverage {
+ $var = `uptime`; chomp($var);
+ @arr = split(/averages*: /, $var, 2);
+ if($darwin) {
+ @arr = split(/ +/, $arr[1], 2);
+ } else {
+ @arr = split(/, /, $arr[1], 2);
+ }
+ $var = $arr[0];
+ return $var;
+}
+
+sub meminfo {
+ my $string = shift;
+ @arr = grep(/^$string/, @meminfo);
+ $var = join("\n", $arr[0]);
+ @arr = split(/\s+/, $var);
+ $var = $arr[1];
+ return $var;
+}
+
+sub memoryusage {
+ if($linux) {
+ if(($l26)||($l3)) {
+ $vara = &meminfo("MemTotal:") * 1024;
+ $varb = &meminfo("Buffers:") * 1024;
+ $varc = &meminfo("Cached:") * 1024;
+ $vard = &meminfo("MemFree:") * 1024;
+ } else {
+ @arr = grep(/Mem:/, @meminfo);
+ $var = join("\n", @arr);
+ @arr = split(/\s+/, $var);
+ $vara = $arr[1];
+ $varb = $arr[5];
+ $varc = $arr[6];
+ $vard = $arr[3];
+ }
+ $vard = ($vara - $vard) - $varb - $varc;
+ } elsif($darwin) {
+ $vard = `vm_stat | grep 'Pages active' | awk '{print \$3}'` * 4096;
+ $vara = `$sysctl -n hw.memsize`;
+ } elsif($sun) {
+ $vara = `/usr/sbin/prtconf | grep "Mem" | awk '{print \$3}'` * 1024 * 1024;
+ $vard = `/bin/vmstat 1 2 | tail -1 | awk '{print \$5 * 1024}'`;
+ $vard = $vara - $vard
+ } elsif($irix || $irix64) {
+ $var = `top -d1 | grep Memory`; chomp($var);
+ $vara = $var;
+ $vard = $var;
+ $vara =~ s/^.* ([0-9]*)M max.*$/$1/;
+ $vara *= 1024 * 1024;
+ $vard =~ s/^.* ([0-9]*)M free,.*$/$1/;
+ $vard = $vara - ($vard * 1024 * 1024);
+ } elsif($netbsd) {
+ $vard = `vmstat -t | tail -n 1 | awk '{print \$8}'`;
+ $vard = $vard * 4096;
+ $vara = `sysctl -n hw.physmem`;
+ } else {
+ $vard = `vmstat -s | grep 'pages active' | awk '{print \$1}'` * `vmstat -s | grep 'per page' | awk '{print \$1}'`;
+ $vara = `$sysctl -n hw.physmem`;
+ }
+ $varp = sprintf("%.2f", $vard / $vara * 100);
+ $vara = sprintf("%.2f", $vara / 1024 / 1024);
+ $vard = sprintf("%.2f", $vard / 1024 / 1024);
+ return $vard."MB/".$vara."MB ($varp%)";
+}
+
+sub networkinfobsd {
+ $varc = shift;
+ $vard = shift;
+ @arr = grep(/$varc/, @netstat);
+ @arr = grep(/Link/, @arr);
+ $var = join("\n", @arr);
+ @arr = split(/\s+/, $var);
+ $var = $arr[$vard] / 1024 / 1024;
+ $var = sprintf("%.2f", $var);
+ return $var;
+}
+
+sub networkinfolinux {
+ $varc = shift;
+ $vard = shift;
+ @arr = grep(/$varc/, @netdev);
+ $var = join("\n", @arr);
+ @arr = split(/:\s*/, $var);
+ @arr = split(/\s+/, $arr[1]);
+ $var = $arr[$vard] / 1024 / 1024;
+ $var = sprintf("%.2f", $var);
+ return $var;
+}
+
+sub networktraffic {
+ $vara = 0;
+ $varz = "";
+ $varb = scalar @nic;
+ if($nic[$vara] ne "") {
+ while($vara lt $varb) {
+ if($nic[$vara] ne "") {
+ if ($varz eq "") {
+ $varz = $col2." - ".$col1;
+ }
+ if($darwin || $freebsd || $dragonfly) {
+ $varx = &networkinfobsd($nic[$vara], 6);
+ $vary = &networkinfobsd($nic[$vara], 9);
+ }
+ if($netbsd || $openbsd) {
+ $varx = &networkinfobsd($nic[$vara], 4);
+ $vary = &networkinfobsd($nic[$vara], 5);
+ }
+ if($sun) {
+ $varx = &networkinfobsd($nic[$vara], 4);
+ $vary = &networkinfobsd($nic[$vara], 6);
+ }
+ if($linux) {
+ $varx = &networkinfolinux($nic[$vara], 0);
+ $vary = &networkinfolinux($nic[$vara], 8);
+ }
+ $varz .= $nicname[$vara]." Traffic (".$nic[$vara].")".$col2.": ".$col1.$varx."MB In/".$vary."MB Out - ";
+ }
+ $vara++;
+ }
+ return $varz;
+ }
+}
+
+sub openfile {
+ my $string = shift;
+ $data = "";
+ if(open(FD, $string)) {
+ while($stream = <FD>) {
+ $data .= $stream;
+ @data = split(/\n/, $data);
+ }
+ close(FD);
+ }
+ return @data;
+}
+
+sub processes {
+ if($irix || $irix64 || $sun) {
+ $var = `ps -e | grep -v PID | wc -l`;
+ } else {
+ $var = `ps ax | grep -v PID | wc -l`;
+ }
+ chomp($var);
+ $var = $var;
+ $var =~ s/^\s+//;
+ $var =~ s/\s+$//;
+ return $var;
+}
+
+sub uptime {
+ if($irix || $irix64 || $d9 || $sun) {
+ $var = `uptime`; chomp($var);
+ if($var =~ /day/) {
+ $var =~ s/^.* ([0-9]*) day.* ([0-9]*):([0-9]*), .*$/$1d $2h $3m/;
+ } elsif($var =~ /min/) {
+ $var =~ s/^.* ([0-9]*) min.*$/0d 0h $1m/;
+ } else {
+ $var =~ s/^.* ([0-9]*):([0-9]*),.*$/0d $1h $2m/;
+ }
+ return $var;
+ } else {
+ if($freebsd || $dragonfly) {
+ $var = `$sysctl -n kern.boottime | awk '{print \$4}'`;
+ }
+ if($netbsd || $openbsd || $darwin) {
+ $var = `$sysctl -n kern.boottime`;
+ }
+ if($linux) {
+ @arr = split(/ /, $uptime[0]);
+ $varx = $arr[0];
+ } else {
+ chomp($var);
+ $var =~ s/,//g;
+ $vary = `date +%s`; chomp($vary);
+ $varx = $vary - $var;
+ }
+ $varx = sprintf("%2d", $varx);
+ $vard = floor($varx / 86400);
+ $varx %= 86400;
+ $varh = floor($varx / 3600);
+ $varx %= 3600;
+ $varm = floor($varx / 60);
+ if($vard eq 0) { $vard = ''; } elsif($vard >= 1) { $vard = $vard.'d '; }
+ if($varh eq 0) { $varh = ''; } elsif($varh >= 1) { $varh = $varh.'h '; }
+ if($varm eq 0) { $varm = ''; } elsif($varm >= 1) { $varm = $varm.'m'; }
+ return $vard.$varh.$varm;
+ }
+}
+
+sub users {
+ $var = `uptime`; chomp($var);
+ $var =~ s/^.* +(.*) user.*$/$1/;
+ return $var;
+}
+
+my $output;
+if($showHostname) { $output = $col1."Hostname".$col2.": ".$col1.$osn.$col2." - "; }
+if($showOS) { $output .= $col1."OS".$col2.": ".$col1.$uname.$col2." - "; }
+if($linux && $showDistro && length $distro > 0 ) {
+ $output .= $col1."Distro".$col2.": ".$col1.$distro;
+ if (length $distrov > 0) {
+ $output .= " ".$distrov;
+ }
+ $output .= $col2." - ";
+}
+if($showCPU) { $output .= $col1."CPU".$col2.": ".$col1.$cpu.$col2." - "; }
+if($showProcesses) { $output .= $col1."Processes".$col2.": ".$col1.&processes.$col2." - "; }
+if($showUptime) { $output .= $col1."Uptime".$col2.": ".$col1.&uptime.$col2." - "; }
+if($showUsers) { $output .= $col1."Users".$col2.": ".$col1.&users.$col2." - "; }
+if($showLoadAverage) { $output .= $col1."Load Average".$col2.": ".$col1.&loadaverage.$col2." - "; }
+if($showBattery) { $output .= $col1."Battery".$col2.": ".$col1.&battery.$col2." - "; }
+if($showMemoryUsage) { $output .= $col1."Memory Usage".$col2.": ".$col1.&memoryusage.$col2." - "; }
+if($showDiskUsage) { $output .= $col1."FS Usage".$col2.": ".$col1.&diskusage.$col2." - "; }
+if($showLVMUsage) { $output .= $col1."LVM Usage".$col2.": ".$col1.&lvmusage; }
+if($showNetworkTraffic) { $output .= &networktraffic; }
+$output =~ s/ - $//g;
+print "$output\n";
blob - /dev/null
blob + 242812e76547fd7e4bb7efd74e3f59e3e84742ee (mode 755)
--- /dev/null
+++ archive/sysinfo277-irssi.pl
+#!/usr/bin/perl -w
+#
+# Copyright (c) 2002, 2003 David Rudie
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $ident: sysinfo277-irssi.pl,v 2.77 2003/09/01 04:20:02 drudie Exp $
+#
+
+
+$VERSION = '2.77';
+%IRSSI = (
+ authors => 'David Rudie',
+ contact => 'david@inexistent.com',
+ name => 'SysInfo',
+ description => 'Cross-platform/architecture system information script.',
+ license => 'BSD',
+ url => 'http://www.inexistent.com/',
+ changed => 'Mon Sep 01 04:20 PDT 2003',
+ bugs => 'Probably some if it cannot read /proc.'
+);
+
+
+use Irssi;
+use POSIX qw(floor);
+use strict;
+
+
+# Set up the arrays and variables first.
+use vars qw(
+ @arr
+ @arr1
+ @arr2
+ $cpu
+ @cpu
+ @cpuinfo
+ $data
+ @data
+ $df
+ @dmesgboot
+ @hinv
+ @meminfo
+ $mhz
+ @mhz
+ $model
+ @netdev
+ @netstat
+ @nic
+ @nicname
+ $smp
+ @smp
+ $stream
+ $sysctl
+ @uptime
+ $var
+ $vara
+ $varb
+ $varc
+ $vard
+ $varh
+ $varm
+ $varp
+ $varx
+ $vary
+ $varz
+);
+
+
+my $os = `uname -s`; chop($os);
+my $osn = `uname -n`; chop($osn);
+my $osv = `uname -r`; chop($osv);
+my $osm = `uname -m`; chop($osm);
+my $uname = "$os $osv/$osm";
+
+
+my $darwin = 1 if $os =~ /^Darwin$/;
+my $freebsd = 1 if $os =~ /^FreeBSD$/;
+my $linux = 1 if $os =~ /^Linux$/;
+my $netbsd = 1 if $os =~ /^NetBSD$/;
+my $openbsd = 1 if $os =~ /^OpenBSD$/;
+my $irix = 1 if $os =~ /^IRIX$/;
+my $irix64 = 1 if $os =~ /^IRIX64$/;
+
+
+my $alpha = 1 if $osm =~ /^alpha$/;
+my $armv4l = 1 if $osm =~ /^armv4l$/;
+my $armv5l = 1 if $osm =~ /^armv5l$/;
+my $i586 = 1 if $osm =~ /^i586$/;
+my $i686 = 1 if $osm =~ /^i686$/;
+my $ia64 = 1 if $osm =~ /^ia64$/;
+my $mips = 1 if $osm =~ /^mips$/;
+my $parisc64 = 1 if $osm =~ /^parisc64$/;
+my $ppc = 1 if $osm =~ /^ppc$/;
+my $x86_64 = 1 if $osm =~ /^x86_64$/;
+
+
+my $l26 = 1 if $osv =~ /^2\.6/;
+
+
+sub cmd_sysinfo {
+ # Specify your NIC interface name (eth0, rl0, fxp0, etc) and a name for it.
+ #
+ # Example: @nic = ('eth0', 'eth1');
+ # @nicname = ('External', 'Internal');
+ #
+ # NOTE: If you set one then you HAVE to set the other.
+ @nic = split(/;/, Irssi::settings_get_str('sysinfo_nics'));
+ @nicname = split(/;/, Irssi::settings_get_str('sysinfo_nicnames'));
+
+
+ # These are the default settings for which information gets displayed.
+ # 0 = Off; 1 = On
+ my $showHostname = 1;
+ my $showOS = 1;
+ my $showCPU = 1;
+ my $showProcesses = 1;
+ my $showUptime = 1;
+ my $showLoadAverage = 1;
+ my $showBattery = 0;
+ my $showMemoryUsage = 1;
+ my $showDiskUsage = 1;
+ my $showNetworkTraffic= 1;
+
+
+ ###############################################
+ ### Nothing below here should need changed. ###
+ ###############################################
+
+
+ if($linux) {
+ @cpuinfo = &openfile("/proc/cpuinfo");
+ @meminfo = &openfile("/proc/meminfo");
+ @netdev = &openfile("/proc/net/dev");
+ @uptime = &openfile("/proc/uptime");
+ } elsif($irix || $irix64) {
+ @hinv = `hinv`;
+ } else {
+ @dmesgboot = &openfile("/var/run/dmesg.boot");
+ @netstat = `netstat -ibn`;
+ if($darwin) {
+ $sysctl = '/usr/sbin/sysctl';
+ } else {
+ $sysctl = '/sbin/sysctl';
+ }
+ }
+
+
+ if($armv4l || $armv5l) {
+ $df = 'df -k';
+ } else {
+ $df = 'df -lk';
+ }
+
+
+ if($showCPU) {
+ if($freebsd) {
+ if($alpha) {
+ @cpu = grep(/^COMPAQ/, @dmesgboot);
+ $cpu = join("\n", $cpu[0]);
+ } else {
+ @cpu = grep(/CPU: /, @dmesgboot);
+ $cpu = join("\n", @cpu);
+ @cpu = split(/: /, $cpu);
+ $cpu = $cpu[1];
+ @smp = grep(/ cpu/, @dmesgboot);
+ $smp = scalar @smp;
+ }
+ }
+ if($netbsd) {
+ if($alpha) {
+ @cpu = grep(/^COMPAQ/, @dmesgboot);
+ $cpu = join("\n", $cpu[0]);
+ @cpu = split(/, /, $cpu);
+ $cpu = $cpu[0];
+ } else {
+ @cpu = grep(/cpu0: /, @dmesgboot);
+ @cpu = grep(!/apic/, @cpu);
+ $cpu = join("\n", $cpu[0]);
+ @cpu = split(/: /, $cpu);
+ $cpu = $cpu[1];
+ @smp = grep(/cpu\d+:/, @dmesgboot);
+ @smp = grep(/MHz/, @smp);
+ $smp = scalar @smp;
+ }
+ }
+ if($openbsd) {
+ @cpu = grep(/cpu0: /, @dmesgboot);
+ @cpu = grep(/[M|G]Hz/, @cpu);
+ $cpu = join("\n", @cpu);
+ @cpu = split(/: /, $cpu);
+ $cpu = $cpu[1];
+ }
+ if($irix || $irix64) {
+ @cpu = grep(/CPU:/, @hinv);
+ $cpu = join("\n", @cpu);
+ $cpu =~ s/^.*(R[0-9]*) .*$/$1/;
+ @mhz = grep(/MHZ/, @hinv);
+ $mhz = join("\n", @mhz);
+ $mhz = $mhz[0];
+ $mhz =~ s/^.* ([0-9]*) MHZ.*$/$1/;
+ @smp = grep(/ IP/, @hinv);
+ $smp = scalar @smp;
+ chop($cpu);
+ chop($mhz);
+ $cpu = "MIPS $cpu ($mhz MHz)";
+ }
+ if($linux) {
+ if($alpha) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $model = &cpuinfo("cpu model\\s+: ");
+ $cpu = "$cpu $model";
+ $smp = &cpuinfo("cpus detected\\s+: ");
+ }
+ if($armv4l || $armv5l) {
+ $cpu = &cpuinfo("Processor\\s+: ");
+ }
+ if($i686 || $i586 || $x86_64) {
+ $cpu = &cpuinfo("model name\\s+: ");
+ $cpu =~ s/(.+) CPU family\t+\d+MHz/$1/g;
+ $cpu =~ s/(.+) CPU .+GHz/$1/g;
+ $mhz = &cpuinfo("cpu MHz\\s+: ");
+ $cpu = "$cpu ($mhz MHz)";
+ @smp = grep(/processor\s+: /, @cpuinfo);
+ $smp = scalar @smp;
+ }
+ if($ia64) {
+ $cpu = &cpuinfo("vendor\\s+: ");
+ $model = &cpuinfo("family\\s+: ");
+ $mhz = &cpuinfo("cpu MHz\\s+: ");
+ $mhz = sprintf("%.2f", $mhz);
+ $cpu = "$cpu $model ($mhz MHz)";
+ @smp = grep(/processor\s+: /, @cpuinfo);
+ $smp = scalar @smp;
+ }
+ if($mips) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $model = &cpuinfo("cpu model\\s+: ");
+ $cpu = "$cpu $model";
+ }
+ if($parisc64) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $model = &cpuinfo("model name\\s+: ");
+ $mhz = &cpuinfo("cpu MHz\\s+: ");
+ $mhz = sprintf("%.2f", $mhz);
+ $cpu = "$model $cpu ($mhz MHz)";
+ }
+ if($ppc) {
+ $cpu = &cpuinfo("cpu\\s+: ");
+ $mhz = &cpuinfo("clock\\s+: ");
+ if($cpu =~ /^9.+/) {
+ $model = "IBM PowerPC G5";
+ } elsif($cpu =~ /^74.+/) {
+ $model = "Motorola PowerPC G4";
+ } else {
+ $model = "IBM PowerPC G3";
+ }
+ $cpu = "$model $cpu ($mhz)";
+ }
+ } elsif($darwin) {
+ $cpu = `hostinfo | grep 'Processor type' | cut -f2 -d':'`; chomp($cpu);
+ $cpu =~ s/^\s*(.+)\s*$/$1/g;
+ if($cpu =~ /^ppc7.+/) {
+ $cpu = "Motorola PowerPC G4";
+ }
+ $mhz = `$sysctl -n hw.cpufrequency`; chomp($mhz);
+ $mhz = sprintf("%.2f", $mhz / 1000000);
+ $cpu = "$cpu ($mhz MHz)";
+ $smp = `hostinfo | grep "physically available" | cut -f1 -d' '`; chomp($smp);
+ }
+ if($smp && $smp gt 1) {
+ $cpu = "$smp x $cpu";
+ }
+ }
+
+
+ my $output;
+ if($showHostname) { $output = "Hostname: $osn - "; }
+ if($showOS) { $output .= "OS: $uname - "; }
+ if($showCPU) { $output .= "CPU: $cpu - "; }
+ if($showProcesses) { $output .= "Processes: ".&processes." - "; }
+ if($showUptime) { $output .= "Uptime: ".&uptime." - "; }
+ if($showLoadAverage) { $output .= "Load Average: ".&loadaverage." - "; }
+ if($showBattery) { $output .= "Battery: ".&battery." - "; }
+ if($showMemoryUsage) { $output .= "Memory Usage: ".&memoryusage." - "; }
+ if($showDiskUsage) { $output .= "Disk Usage: ".&diskusage." - "; }
+ if($showNetworkTraffic) { $output .= &networktraffic; }
+ $output =~ s/ - $//g;
+ Irssi::active_win()->command("/ $output");
+ return 1;
+}
+
+
+sub battery {
+ $data = "";
+ if(open(FD, '/proc/apm')) {
+ while($stream = <FD>) {
+ $data .= $stream;
+ @data = split(/\n/, $data);
+ }
+ close(FD);
+ }
+ $data = $data[0];
+ $data =~ s/.+\s(\d+%).+/$1/;
+ return $data;
+}
+
+
+sub cpuinfo {
+ my $string = shift;
+ @arr = grep(/$string/, @cpuinfo);
+ $var = join("\n", $arr[0]);
+ @arr = split(/: /, $var);
+ $var = $arr[1];
+ return $var;
+}
+
+
+sub diskusage {
+ if($irix || $irix64) {
+ $vara = `$df | grep -v Filesystem | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vara);
+ $vard = `$df | grep -v Filesystem | awk '{ sum+=\$4 / 1024 / 1024}; END { print sum }'`; chomp($vard);
+ } else {
+ $vara = `$df | grep -v Filesystem | awk '{ sum+=\$2 / 1024 / 1024}; END { print sum }'`; chomp($vara);
+ $vard = `$df | grep -v Filesystem | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vard);
+ }
+ $varp = sprintf("%.2f", $vard / $vara * 100);
+ $vara = sprintf("%.2f", $vara);
+ $vard = sprintf("%.2f", $vard);
+ return $vard."GB/".$vara."GB ($varp%)";
+}
+
+
+sub loadaverage {
+ $var = `uptime`; chomp($var);
+ if($irix || $irix64 || $linux) {
+ @arr = split(/average: /, $var, 2);
+ } else {
+ @arr = split(/averages: /, $var, 2);
+ }
+ @arr = split(/, /, $arr[1], 2);
+ $var = $arr[0];
+ return $var;
+}
+
+
+sub meminfo {
+ my $string = shift;
+ @arr = grep(/$string/, @meminfo);
+ $var = join("\n", $arr[0]);
+ @arr = split(/\s+/, $var);
+ $var = $arr[1];
+ return $var;
+}
+
+
+sub memoryusage {
+ if($linux) {
+ if($l26) {
+ $vara = &meminfo("MemTotal:") * 1024;
+ $varb = &meminfo("Buffers:") * 1024;
+ $varc = &meminfo("Cached:") * 1024;
+ $vard = &meminfo("MemFree:") * 1024;
+ } else {
+ @arr = grep(/Mem:/, @meminfo);
+ $var = join("\n", @arr);
+ @arr = split(/\s+/, $var);
+ $vara = $arr[1];
+ $varb = $arr[5];
+ $varc = $arr[6];
+ $vard = $arr[3];
+ }
+ $vard = ($vara - $vard) - $varb - $varc;
+ } elsif($darwin) {
+ $vard = `vm_stat | grep 'Pages active' | awk '{print \$3}'` * 4096;
+ $vara = `$sysctl -n hw.physmem`;
+ } elsif($irix || $irix64) {
+ $var = `top -d1 | grep Memory`; chomp($var);
+ $vara = $var;
+ $vard = $var;
+ $vara =~ s/^.* ([0-9]*)M max.*$/$1/;
+ $vara *= 1024 * 1024;
+ $vard =~ s/^.* ([0-9]*)M free,.*$/$1/;
+ $vard = $vara - ($vard * 1024 * 1024);
+ } else {
+ $vard = `vmstat -s | grep 'pages active' | awk '{print \$1}'` * `vmstat -s | grep 'per page' | awk '{print \$1}'`;
+ $vara = `$sysctl -n hw.physmem`;
+ }
+ $varp = sprintf("%.2f", $vard / $vara * 100);
+ $vara = sprintf("%.2f", $vara / 1024 / 1024);
+ $vard = sprintf("%.2f", $vard / 1024 / 1024);
+ return $vard."MB/".$vara."MB ($varp%)";
+}
+
+
+sub networkinfobsd {
+ $varc = shift;
+ $vard = shift;
+ @arr = grep(/$varc/, @netstat);
+ @arr = grep(/Link/, @arr);
+ $var = join("\n", @arr);
+ @arr = split(/\s+/, $var);
+ $var = $arr[$vard] / 1024 / 1024;
+ $var = sprintf("%.2f", $var);
+ return $var;
+}
+
+
+sub networkinfolinux {
+ $varc = shift;
+ $vard = shift;
+ @arr = grep(/$varc/, @netdev);
+ $var = join("\n", @arr);
+ @arr = split(/:\s*/, $var);
+ @arr = split(/\s+/, $arr[1]);
+ $var = $arr[$vard] / 1024 / 1024;
+ $var = sprintf("%.2f", $var);
+ return $var;
+}
+
+
+sub networktraffic {
+ $vara = 0;
+ $varz = "";
+ $varb = scalar @nic;
+ if($nic[$vara] ne "") {
+ while($vara lt $varb) {
+ if($nic[$vara] ne "") {
+ if($darwin || $freebsd) {
+ $varx = &networkinfobsd($nic[$vara], 6);
+ $vary = &networkinfobsd($nic[$vara], 9);
+ }
+ if($netbsd || $openbsd) {
+ $varx = &networkinfobsd($nic[$vara], 4);
+ $vary = &networkinfobsd($nic[$vara], 5);
+ }
+ if($linux) {
+ $varx = &networkinfolinux($nic[$vara], 0);
+ $vary = &networkinfolinux($nic[$vara], 8);
+ }
+ $varz .= $nicname[$vara]." Traffic (".$nic[$vara]."): ".$varx."MB In/".$vary."MB Out - ";
+ }
+ $vara++;
+ }
+ return $varz;
+ }
+}
+
+
+sub openfile {
+ my $string = shift;
+ $data = "";
+ if(open(FD, $string)) {
+ while($stream = <FD>) {
+ $data .= $stream;
+ @data = split(/\n/, $data);
+ }
+ close(FD);
+ }
+ return @data;
+}
+
+
+sub processes {
+ if($irix || $irix64) {
+ $var = `ps -e | grep -v PID | wc -l`;
+ } else {
+ $var = `ps ax | grep -v PID | wc -l`;
+ }
+ chomp($var);
+ $var = $var;
+ $var =~ s/^\s+//;
+ $var =~ s/\s+$//;
+ return $var;
+}
+
+
+sub uptime {
+ if($irix || $irix64) {
+ $var = `uptime`; chomp($var);
+ if($var =~ /day/) {
+ $var =~ s/^.* ([0-9]*) day.* ([0-9]*):([0-9]*), .*$/$1d $2h $3m/;
+ } elsif($var =~/min/) {
+ $var =~ s/^.* ([0-9]*) min.*$/0d 0h $1m/;
+ } else {
+ $var =~ s/^.* ([0-9]*):([0-9]*),.*$/0d $1h $2m/;
+ }
+ return $var;
+ } else {
+ if($freebsd) {
+ $var = `$sysctl -n kern.boottime | awk '{print \$4}'`;
+ }
+ if($netbsd || $openbsd || $darwin) {
+ $var = `$sysctl -n kern.boottime`;
+ }
+ if($linux) {
+ @arr = split(/ /, $uptime[0]);
+ $varx = $arr[0];
+ } else {
+ chomp($var);
+ $var =~ s/,//g;
+ $vary = `date +%s`; chomp($vary);
+ $varx = $vary - $var;
+ }
+ $varx = sprintf("%2d", $varx);
+ $vard = floor($varx / 86400);
+ $varx %= 86400;
+ $varh = floor($varx / 3600);
+ $varx %= 3600;
+ $varm = floor($varx / 60);
+ if($vard eq 0) { $vard = ''; } elsif($vard >= 1) { $vard = $vard.'d '; }
+ if($varh eq 0) { $varh = ''; } elsif($varh >= 1) { $varh = $varh.'h '; }
+ if($varm eq 0) { $varm = ''; } elsif($varm >= 1) { $varm = $varm.'m'; }
+ return $vard.$varh.$varm;
+ }
+}
+
+Irssi::settings_add_str("sysinfo", "sysinfo_nics", "");
+Irssi::settings_add_str("sysinfo", "sysinfo_nicnames", "");
+
+Irssi::command_bind("sysinfo", "cmd_sysinfo");
blob - /dev/null
blob + 9fb70ae09e54ec49a8653fb3b5d585603b1e1624 (mode 755)
Binary files /dev/null and archive/sysinfo281.16.pl differ
blob - 604988d17cbef4434e6639804dbb69e8333b5460 (mode 755)
blob + /dev/null
--- sysinfo-modded.pl
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (c) 2002-2005 David Rudie
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# Several additions and fixes to this script were contributed by Travis
-# Morgan and therefore are Copyright (c) 2003-2006 Travis Morgan
-#
-# If you notice any bugs including spacing issues, wrong detection of hardware,
-# obvious features missing, etc, we both want to hear about them. If you make
-# this script work on other operating systems and/or architectures please send
-# either of us your patches. My e-mail address is d.rudie@gmail.com and
-# Travis Morgan's e-mail address is imbezol@criticaldamage.com
-#
-# The latest version can be obtained from either http://www.inexistent.com/ or
-# http://imbezol.org/sysinfo/
-#
-# You can also reach Travis in #crd on efnet.
-# Fixed kernel versioning to support 5.x kernel
-# NOW it suits my needs a little better. =)
-
-use POSIX qw(floor);
-use strict;
-
-
-# Set up the arrays and variables first.
-use vars qw(
- @arr
- @arr1
- @arr2
- $cpu
- @cpu
- @cpuinfo
- $data
- $distro
- $distrov
- @distros
- @data
- $df
- $vgs
- @dmesgboot
- @hinv
- @meminfo
- $mhz
- @mhz
- $model
- @netdev
- @netstat
- @nic
- @nicname
- $realdistro
- $smp
- @smp
- $stream
- $sysctl
- @uptime
- $var
- $vara
- $varb
- $varc
- $vard
- $varh
- $varm
- $varp
- $varx
- $vary
- $varz
- $col1
- $col2
-);
-
-
-# Specify your NIC interface name (eth0, rl0, fxp0, etc) and a name for it.
-#
-# Example: @nic = ('eth0', 'eth1');
-# @nicname = ('External', 'Internal');
-#
-# NOTE: If you set one then you HAVE to set the other.
-@nic = ('');
-@nicname = ('');
-
-$col1 = '';
-$col2 = '';
-
-# These are the default settings for which information gets displayed.
-# 0 = Off; 1 = On
-my $useShortHostname = 1;
-
-my $showHostname = 1;
-my $showOS = 1;
-my $showCPU = 1;
-my $showProcesses = 1;
-my $showUptime = 1;
-my $showUsers = 1;
-my $showLoadAverage = 1;
-my $showBattery = 0; # Requires APM and /proc/apm or /proc/acpi/battery/
-my $showMemoryUsage = 1;
-my $showDiskUsage = 1;
-my $showLVMUsage = 0;
-my $showNetworkTraffic = 0;
-my $showDistro = 1;
-
-###############################################
-### Nothing below here should need changed. ###
-###############################################
-
-my $sysinfoVer = '2.81.21';
-my $sysinfoDate = 'Sep 7, 2012, 21:43 MDT';
-
-my $os = `uname -s`; chomp($os);
-my $osn = `uname -n`; chomp($osn);
-if($useShortHostname) {
- $osn =~ s/([^\.]*).*/$1/;
-}
-my $osv = `uname -r`; chomp($osv);
-my $osm = `uname -m`; chomp($osm);
-my $uname = "$os $osv/$osm";
-
-my $darwin = 1 if $os =~ /^Darwin$/;
-my $freebsd = 1 if $os =~ /^FreeBSD$/;
-my $dragonfly = 1 if $os =~ /^DragonFly$/;
-my $linux = 1 if $os =~ /^Linux$/;
-my $netbsd = 1 if $os =~ /^NetBSD$/;
-my $openbsd = 1 if $os =~ /^OpenBSD$/;
-my $irix = 1 if $os =~ /^IRIX$/;
-my $irix64 = 1 if $os =~ /^IRIX64$/;
-my $sun = 1 if $os =~ /^SunOS$/;
-
-
-my $alpha = 1 if $osm =~ /^alpha$/;
-my $arm = 1 if $osm =~ /^arm$/;
-my $i586 = 1 if $osm =~ /^i586$/;
-my $i686 = 1 if $osm =~ /^i686$/;
-my $ia64 = 1 if $osm =~ /^ia64$/;
-my $mips = 1 if $osm =~ /^mips$/;
-my $parisc = 1 if $osm =~ /^parisc$/;
-my $parisc64 = 1 if $osm =~ /^parisc64$/;
-my $ppc = 1 if $osm =~ /^ppc$/;
-my $ppc64 = 1 if $osm =~ /^ppc64$/;
-my $s390 = 1 if $osm =~ /^s390$/;
-my $s390x = 1 if $osm=~ /^s390x$/;
-my $sh = 1 if $osm=~ /^sh/;
-my $sparc = 1 if $osm =~ /^sparc$/;
-my $sparc64 = 1 if $osm =~ /^sparc64$/;
-my $x86_64 = 1 if $osm =~ /^x86_64$/;
-
-
-my $d7 = 1 if $darwin && $osv =~ /^7\.\d+\.\d+/;
-my $d8 = 1 if $darwin && $osv =~ /^8\.\d+\.\d+/;
-my $d9 = 1 if $darwin && $osv =~ /^9\.\d+\.\d+/;
-my $l26 = 1 if $linux && $osv =~ /^2\.6/;
-my $l3 = 1 if $linux && $osv =~ /^2\.7/ || $osv =~ /^3\./ || $osv =~ /^[3-5]\./;
-my $f_old = 1 if $freebsd && $osv =~ /^4\.1-/ || $osv =~ /^4\.0-/ || $osv =~ /^3/ || $osv =~ /^2/;
-
-my $progArgs = $ARGV[0];
-if($progArgs) {
- if($progArgs eq '-v' || $progArgs eq '--version') {
- print "SysInfo v$sysinfoVer $sysinfoDate\n";
- print "Written by David Rudie <d.rudie\@gmail.com> and Travis Morgan <imbezol\@criticaldamage.com>\n";
- exit -1;
- }
-}
-
-if($linux) {
- @cpuinfo = &openfile("/proc/cpuinfo");
- @meminfo = &openfile("/proc/meminfo");
- @netdev = &openfile("/proc/net/dev");
- @uptime = &openfile("/proc/uptime");
-
- $df = 'df -lkP';
- $vgs = 'vgs --trustcache --unbuffered --noheadings -o vg_size,vg_free --nosuffix --units k 2>&1 | grep -v WARNING';
-
- if($showDistro) {
- @distros = (
- "Arch", "/etc/arch-release",
- "Gentoo", "/etc/gentoo-release",
- "Fedora Core", "/etc/fedora-release",
- "SUSE", "/etc/SuSE-release",
- "Slackware", "/etc/slackware-version",
- "Cobalt", "/etc/cobalt-release",
- "Debian", "/etc/debian_version",
- "Mandrake", "/etc/mandrake-release",
- "Mandrake", "/etc/mandrakelinux-release",
- "Yellow Dog", "/etc/yellowdog-release",
- "OpenFiler", "/etc/distro-release",
- "Red Hat", "/etc/redhat-release"
- );
- $distro = "";
- $distrov = "";
- do {
- if (-e $distros[1]) {
- $distro = $distros[0];
- $distrov = `cat $distros[1] | head -n 1`;
- chomp($distrov);
- $distrov =~ s/[^0-9]*([0-9.]+)[^0-9.]{0,1}.*/$1/;
- }
- shift @distros; shift @distros;
- } until (scalar @distros == 0) || (length $distro > 0);
- if ($distro eq "Debian") {
- if (-e "/etc/lsb-release") {
- $realdistro = `cat /etc/lsb-release | grep DISTRIB_DESCRIPTION`;
- if ($realdistro ne "") {
- chomp $realdistro;
- $realdistro =~ s/DISTRIB_DESCRIPTION="//;
- $realdistro =~ s/"$//;
- $distro = $realdistro;
- $distrov = $realdistro;
- $distro =~ s/ [0-9.]+.*$//;
- $distrov =~ s/$distro //;
- }
- }
- }
- if ($distro eq "Red Hat") {
- $realdistro = `cat /etc/redhat-release`;
- if ($realdistro =~ "^CentOS") {
- $distro = "CentOS";
- }
- }
- if ($distro eq "SUSE") {
- $realdistro = `cat /etc/SuSE-release`;
- if ($realdistro =~ "^openSUSE") {
- $distro = "openSUSE";
- }
- elsif ($realdistro =~ "^SUSE Linux Enterprise Server") {
- $distro = "SLES";
- }
- elsif ($realdistro =~ "^SUSE Linux Enterprise Desktop") {
- $distro = "SLED";
- }
- }
- }
-} elsif($irix || $irix64) {
- @hinv = `hinv`;
-} else {
- @dmesgboot = &openfile("/var/run/dmesg.boot");
- if($sun) {
- @netstat = `netstat -in`;
- } else {
- @netstat = `netstat -ibn`;
- }
- if($darwin) {
- $sysctl = '/usr/sbin/sysctl';
- } else {
- $sysctl = '/sbin/sysctl';
- }
- if($arm) {
- $df = 'df -k';
- } elsif($f_old) {
- $df = 'df -k';
- } else {
- $df = 'df -lk';
- }
-
-}
-
-if($showCPU) {
- if($freebsd || $dragonfly) {
- if($alpha) {
- @cpu = grep(/^COMPAQ/, @dmesgboot);
- $cpu = join("\n", $cpu[0]);
- } else {
- @cpu = grep(/CPU: /, @dmesgboot);
- $cpu = join("\n", @cpu);
- $cpu =~ s/Warning:.*disabled//;
- @cpu = split(/CPU: /, $cpu);
- $cpu = $cpu[1];
- $cpu =~ s/\s\d\.\d\dGHz//g;
- $cpu =~ s/\s*[^\s]*-class CPU//gi;
- $cpu =~ s/(\S*)-MHz/$1 MHz/gi;
- $cpu =~ s/@\s+//;
- chomp($cpu);
- $smp = `$sysctl -n hw.ncpu`;
- chomp($smp);
- if ( $smp eq 1 ) {
- $smp = "";
- }
- }
- }
- if($netbsd) {
- if($alpha) {
- @cpu = grep(/^COMPAQ/, @dmesgboot);
- $cpu = join("\n", $cpu[0]);
- @cpu = split(/, /, $cpu);
- $cpu = $cpu[0];
- } else {
- @cpu = grep(/^v?cpu0.*MHz/, @dmesgboot);
- @cpu = grep(!/apic/, @cpu);
- @cpu = split(/: /,$cpu[0]);
- $cpu = $cpu[1];
- $cpu =~ s/, id.*//;
- $mhz = $cpu;
- $mhz =~ s/.* ([.0-9]+) *MHz.*$/$1/;
- $cpu =~ s/,.*//;
- $cpu = "$cpu ($mhz MHz)";
- $smp = `$sysctl -n hw.ncpu`;
- chomp($smp);
- if ( $smp eq 1 ) {
- $smp = "";
- }
- }
- }
- if($openbsd) {
- @cpu = grep(/cpu0: /, @dmesgboot);
- @cpu = grep(/[M|G]Hz/, @cpu);
- $cpu = join("\n", @cpu);
- @cpu = split(/: /, $cpu);
- $cpu = $cpu[1];
- $cpu =~ s/, / /;
- $cpu =~ s/([0-9.]* [MG]Hz)$/($1)/;
- $smp = `$sysctl -n hw.ncpu`;
- chomp($smp);
- if ( $smp eq 1 ) {
- $smp = "";
- }
- }
- if($irix || $irix64) {
- @cpu = grep(/CPU:/, @hinv);
- $cpu = join("\n", @cpu);
- $cpu =~ s/^.*(R[0-9]*) .*$/$1/;
- @mhz = grep(/MHZ/, @hinv);
- $mhz = join("\n", @mhz);
- $mhz = $mhz[0];
- $mhz =~ s/^.* ([0-9]*) MHZ.*$/$1/;
- @smp = grep(/ IP/, @hinv);
- $smp = $smp[0];
- $smp =~ s/^([0-9]*) .*$/$1/;
- chomp($smp);
- chomp($cpu);
- chomp($mhz);
- $cpu = "MIPS $cpu ($mhz MHz)";
- }
- if($linux) {
- if($alpha) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $model = &cpuinfo("cpu model\\s+: ");
- $model = "$model (" . &cpuinfo("system type") . ")";
- $mhz = &cpuinfo("cycle frequency \\[Hz\\]\\s+: ");
- $mhz = ($mhz / 1000000);
- $mhz = sprintf("%.2f", $mhz);
- $cpu = "$cpu $model ($mhz MHz)";
- $smp = &cpuinfo("cpus detected\\s+: ");
- }
- if($arm) {
- $cpu = &cpuinfo("Processor\\s+: ");
- }
- if($i686 || $i586 || $x86_64) {
- $cpu = &cpuinfo("model name\\s+: ");
- $cpu =~ s/(.+) CPU family\t+\d+MHz/$1/g;
- #$cpu =~ s/(.+) CPU .+GHz/$1/g;
- $mhz = &cpuinfo("cpu MHz\\s+: ");
- $mhz =~ s/^\s*//g;
- $cpu = "$cpu ($mhz MHz)";
- @smp = grep(/processor\s+: /, @cpuinfo);
- $smp = scalar @smp;
- }
- if($ia64) {
- $cpu = &cpuinfo("vendor\\s+: ");
- $model = &cpuinfo("family\\s+: ");
- $mhz = &cpuinfo("cpu MHz\\s+: ");
- $mhz = sprintf("%.2f", $mhz);
- $cpu = "$cpu $model ($mhz MHz)";
- @smp = grep(/processor\s+: /, @cpuinfo);
- $smp = scalar @smp;
- }
- if($mips) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $model = &cpuinfo("cpu model\\s+: ");
- $cpu = "$cpu $model";
- }
- if($parisc || $parisc64) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $model = &cpuinfo("model name\\s+: ");
- $mhz = &cpuinfo("cpu MHz\\s+: ");
- $mhz = sprintf("%.2f", $mhz);
- $cpu = "$model $cpu ($mhz MHz)";
- @smp = grep(/processor\s+: /, @cpuinfo);
- $smp = scalar @smp;
- }
- if($ppc || $ppc64) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $mhz = &cpuinfo("clock\\s+: ");
- $mhz =~ s/^(\d+\.\d{3})\d*\s*MHz/$1 MHz/;
- $cpu =~ s/, altivec supported//;
- if($cpu =~ /^(PPC)*9.+/) {
- $model = "IBM PowerPC G5";
- } elsif($cpu =~ /^74.+/) {
- $model = "Motorola PowerPC G4";
- } else {
- $model = "IBM PowerPC G3";
- }
- $cpu = "$model $cpu ($mhz)";
- $smp = `/bin/grep -c -e '^processor\\s*:\\s*[0-9]\\+' /proc/cpuinfo`; chomp($smp);
- }
- if($s390 || $s390x) {
- $cpu = &cpuinfo("vendor_id\\s+: ");
- $smp = &cpuinfo("processors\\s+: ");
- }
- if($sh) {
- $cpu = &cpuinfo("cpu family\\s+: ");
- $model = &cpuinfo("cpu type\\s+: ");
- $mhz = &cpuinfo("cpu_clk\\s+: ");
- $cpu = "$cpu $model ($mhz MHz)";
- }
-
- if($sparc || $sparc64) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $model = &cpuinfo("type\\s+: ");
- $cpu = "$model $cpu";
- $mhz = &cpuinfo("Cpu0ClkTck\\s+: ");
- $mhz = (hex($mhz) / 1000000);
- $cpu = "$cpu ($mhz MHz)";
- $smp = &cpuinfo("ncpus active\\s+: ");
- }
- } elsif($sun) {
- my $osp = `uname -p`; chomp($osp);
- if($osv =~ /^5\.11/ || ($osv =~ /^5\.10/ && $osp =~ "i386")) {
- $cpu = `/usr/sbin/psrinfo -vp | tail -1`; chomp($cpu);
- $mhz = `/usr/sbin/psrinfo -vp | grep MHz | awk '{ print "(" \$(NF-1) " " \$NF}' | tail -1`; chomp($mhz);
- $cpu = "$cpu $mhz";
- $smp = `/usr/sbin/psrinfo -p`; chomp($smp);
- $cpu =~ s/^\s*//;
- }
- if($osp =~ "sparc") {
- $cpu = `/usr/platform/${osm}/sbin/prtdiag | head -1`; chomp($cpu);
- $cpu =~ s/.*${osm} //;
- $smp = `/usr/sbin/psrinfo | wc -l`;
- }
- } elsif($darwin) {
- $cpu = `hostinfo | grep 'Processor type' | cut -f2 -d':'`; chomp($cpu);
- $cpu =~ s/^\s*(.+)\s*$/$1/g;
- if($cpu =~ /^ppc7.+/) {
- $cpu = "Motorola PowerPC G4";
- }
- if($cpu =~ /^ppc970/) {
- $cpu = "Motorola PowerPC G5";
- }
- if ($cpu =~ /^i486/) {
- $cpu = `sysctl -n machdep.cpu.brand_string`; chomp($cpu);
- }
- $mhz = `$sysctl -n hw.cpufrequency`; chomp($mhz);
- $mhz = sprintf("%.2f", $mhz / 1000000);
- $cpu = "$cpu ($mhz MHz)";
- $smp = `hostinfo | grep "physically available" | cut -f1 -d' '`; chomp($smp);
- }
- if($smp && $smp gt 1) {
- $cpu = "$smp x $cpu";
- }
- $cpu =~ s/\s*@\s*\d*\.\d*\s*GHz//;
- $cpu =~ s/^\s+//;
- $cpu =~ s/\(R\)//gi;
- $cpu =~ s/\(tm\)//gi;
- $cpu =~ s/\([^(]*GenuineIntel[^)]*\)//;
- $cpu =~ s/\s*processor//gi;
- $cpu =~ s/\s*CPU//gi;
- $cpu =~ s/ +/ /g;
-}
-
-sub batteryacpi {
- my $data = "";
- my ($bfull, $bcur, @dirs, $dir);
-
- if (opendir(DIR, '/proc/acpi/battery/')) {
- @dirs = grep { !/^\./ } readdir (DIR);
- closedir(DIR);
- foreach $dir (@dirs) {
- $bfull = "";
- $bcur = "";
- if(open(FD, '/proc/acpi/battery/'.$dir.'/info')) {
- while (<FD>) {
- if (/^last full capacity:\ +([0-9]+)/) {
- $bfull = $1;
- }
- }
- close(FD);
- }
- if(open(FD, '/proc/acpi/battery/'.$dir.'/state')) {
- while (<FD>) {
- if (/^remaining capacity:\ +([0-9]+)/) {
- $bcur = $1;
- }
- }
- close(FD);
- }
- if ($bfull ne "") {
- if ($data ne "") {
- $data = $data." ";
- }
- $data = $data.sprintf("%.0f",($bcur/$bfull*100));
- $data = $data."%";
- }
- }
- }
- return $data;
-}
-
-sub battery {
- $data = "";
-
- if ( -f '/proc/apm') {
- if(open(FD, '/proc/apm')) {
- while($stream = <FD>) {
- $data .= $stream;
- @data = split(/\n/, $data);
- }
- close(FD);
- }
- $data = $data[0];
- $data =~ s/.+\s(\d+%).+/$1/;
- } elsif ( -d '/proc/acpi/battery') {
- $data=&batteryacpi;
- }
- return $data;
-}
-
-sub cpuinfo {
- my $string = shift;
- @arr = grep(/$string/, @cpuinfo);
- $var = join("\n", $arr[0]);
- @arr = split(/: /, $var);
- $var = $arr[1];
- return $var;
-}
-
-sub diskusage {
- if($irix || $irix64) {
- $vara = `$df | grep dev | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vara);
- $vard = `$df | grep dev | awk '{ sum+=\$4 / 1024 / 1024}; END { print sum }'`; chomp($vard);
- } elsif($sun) {
- $vara = `$df | grep -v swap | grep -v libc | awk '{ sum+=\$2 / 1024 / 1024}; END { print sum }'`; chomp($vara);
- $vard = `$df | grep -v swap | grep -v libc | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vard);
- } else {
- $vara = `$df | egrep "dev|rpool" | awk '{ sum+=\$2 / 1024 / 1024}; END { print sum }'`; chomp($vara);
- $vard = `$df | egrep "dev|rpool" | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vard);
- }
- if ($vara eq "" or $vara == 0 ) {
- return "0GB/0GB (0%)";
- } else {
- $varp = sprintf("%.2f", $vard / $vara * 100);
- $vara = sprintf("%.2f", $vara);
- $vard = sprintf("%.2f", $vard);
- return $vard."GB/".$vara."GB ($varp%)";
- }
-}
-
-sub lvmusage {
- $vara = 0;
-
- if ($linux) {
- $vara = `$vgs | awk '{ sum+=\$1 / 1024 / 1024}; END { print sum }'`; chomp($vara);
- $vard = `$vgs | awk '{ used =\$1-\$2; sum+=used / 1024 / 1024}; END { print sum }'`; chomp($vard);
- }
-
- if ($vara eq "" or $vara == 0 ) {
- return "0GB/0GB (0%)";
- } else {
- $varp = sprintf("%.2f", $vard / $vara * 100);
- $vara = sprintf("%.2f", $vara);
- $vard = sprintf("%.2f", $vard);
- return $vard."GB/".$vara."GB ($varp%)";
- }
-}
-
-
-sub loadaverage {
- $var = `uptime`; chomp($var);
- @arr = split(/averages*: /, $var, 2);
- if($darwin) {
- @arr = split(/ +/, $arr[1], 2);
- } else {
- @arr = split(/, /, $arr[1], 2);
- }
- $var = $arr[0];
- return $var;
-}
-
-sub meminfo {
- my $string = shift;
- @arr = grep(/^$string/, @meminfo);
- $var = join("\n", $arr[0]);
- @arr = split(/\s+/, $var);
- $var = $arr[1];
- return $var;
-}
-
-sub memoryusage {
- if($linux) {
- if(($l26)||($l3)) {
- $vara = &meminfo("MemTotal:") * 1024;
- $varb = &meminfo("Buffers:") * 1024;
- $varc = &meminfo("Cached:") * 1024;
- $vard = &meminfo("MemFree:") * 1024;
- } else {
- @arr = grep(/Mem:/, @meminfo);
- $var = join("\n", @arr);
- @arr = split(/\s+/, $var);
- $vara = $arr[1];
- $varb = $arr[5];
- $varc = $arr[6];
- $vard = $arr[3];
- }
- $vard = ($vara - $vard) - $varb - $varc;
- } elsif($darwin) {
- $vard = `vm_stat | grep 'Pages active' | awk '{print \$3}'` * 4096;
- $vara = `$sysctl -n hw.memsize`;
- } elsif($sun) {
- $vara = `/usr/sbin/prtconf | grep "Mem" | awk '{print \$3}'` * 1024 * 1024;
- $vard = `/bin/vmstat 1 2 | tail -1 | awk '{print \$5 * 1024}'`;
- $vard = $vara - $vard
- } elsif($irix || $irix64) {
- $var = `top -d1 | grep Memory`; chomp($var);
- $vara = $var;
- $vard = $var;
- $vara =~ s/^.* ([0-9]*)M max.*$/$1/;
- $vara *= 1024 * 1024;
- $vard =~ s/^.* ([0-9]*)M free,.*$/$1/;
- $vard = $vara - ($vard * 1024 * 1024);
- } elsif($netbsd) {
- $vard = `vmstat -t | tail -n 1 | awk '{print \$8}'`;
- $vard = $vard * 4096;
- $vara = `sysctl -n hw.physmem`;
- } else {
- $vard = `vmstat -s | grep 'pages active' | awk '{print \$1}'` * `vmstat -s | grep 'per page' | awk '{print \$1}'`;
- $vara = `$sysctl -n hw.physmem`;
- }
- $varp = sprintf("%.2f", $vard / $vara * 100);
- $vara = sprintf("%.2f", $vara / 1024 / 1024);
- $vard = sprintf("%.2f", $vard / 1024 / 1024);
- return $vard."MB/".$vara."MB ($varp%)";
-}
-
-sub networkinfobsd {
- $varc = shift;
- $vard = shift;
- @arr = grep(/$varc/, @netstat);
- @arr = grep(/Link/, @arr);
- $var = join("\n", @arr);
- @arr = split(/\s+/, $var);
- $var = $arr[$vard] / 1024 / 1024;
- $var = sprintf("%.2f", $var);
- return $var;
-}
-
-sub networkinfolinux {
- $varc = shift;
- $vard = shift;
- @arr = grep(/$varc/, @netdev);
- $var = join("\n", @arr);
- @arr = split(/:\s*/, $var);
- @arr = split(/\s+/, $arr[1]);
- $var = $arr[$vard] / 1024 / 1024;
- $var = sprintf("%.2f", $var);
- return $var;
-}
-
-sub networktraffic {
- $vara = 0;
- $varz = "";
- $varb = scalar @nic;
- if($nic[$vara] ne "") {
- while($vara lt $varb) {
- if($nic[$vara] ne "") {
- if ($varz eq "") {
- $varz = $col2." - ".$col1;
- }
- if($darwin || $freebsd || $dragonfly) {
- $varx = &networkinfobsd($nic[$vara], 6);
- $vary = &networkinfobsd($nic[$vara], 9);
- }
- if($netbsd || $openbsd) {
- $varx = &networkinfobsd($nic[$vara], 4);
- $vary = &networkinfobsd($nic[$vara], 5);
- }
- if($sun) {
- $varx = &networkinfobsd($nic[$vara], 4);
- $vary = &networkinfobsd($nic[$vara], 6);
- }
- if($linux) {
- $varx = &networkinfolinux($nic[$vara], 0);
- $vary = &networkinfolinux($nic[$vara], 8);
- }
- $varz .= $nicname[$vara]." Traffic (".$nic[$vara].")".$col2.": ".$col1.$varx."MB In/".$vary."MB Out - ";
- }
- $vara++;
- }
- return $varz;
- }
-}
-
-sub openfile {
- my $string = shift;
- $data = "";
- if(open(FD, $string)) {
- while($stream = <FD>) {
- $data .= $stream;
- @data = split(/\n/, $data);
- }
- close(FD);
- }
- return @data;
-}
-
-sub processes {
- if($irix || $irix64 || $sun) {
- $var = `ps -e | grep -v PID | wc -l`;
- } else {
- $var = `ps ax | grep -v PID | wc -l`;
- }
- chomp($var);
- $var = $var;
- $var =~ s/^\s+//;
- $var =~ s/\s+$//;
- return $var;
-}
-
-sub uptime {
- if($irix || $irix64 || $d9 || $sun) {
- $var = `uptime`; chomp($var);
- if($var =~ /day/) {
- $var =~ s/^.* ([0-9]*) day.* ([0-9]*):([0-9]*), .*$/$1d $2h $3m/;
- } elsif($var =~ /min/) {
- $var =~ s/^.* ([0-9]*) min.*$/0d 0h $1m/;
- } else {
- $var =~ s/^.* ([0-9]*):([0-9]*),.*$/0d $1h $2m/;
- }
- return $var;
- } else {
- if($freebsd || $dragonfly) {
- $var = `$sysctl -n kern.boottime | awk '{print \$4}'`;
- }
- if($netbsd || $openbsd || $darwin) {
- $var = `$sysctl -n kern.boottime`;
- }
- if($linux) {
- @arr = split(/ /, $uptime[0]);
- $varx = $arr[0];
- } else {
- chomp($var);
- $var =~ s/,//g;
- $vary = `date +%s`; chomp($vary);
- $varx = $vary - $var;
- }
- $varx = sprintf("%2d", $varx);
- $vard = floor($varx / 86400);
- $varx %= 86400;
- $varh = floor($varx / 3600);
- $varx %= 3600;
- $varm = floor($varx / 60);
- if($vard eq 0) { $vard = ''; } elsif($vard >= 1) { $vard = $vard.'d '; }
- if($varh eq 0) { $varh = ''; } elsif($varh >= 1) { $varh = $varh.'h '; }
- if($varm eq 0) { $varm = ''; } elsif($varm >= 1) { $varm = $varm.'m'; }
- return $vard.$varh.$varm;
- }
-}
-
-sub users {
- $var = `uptime`; chomp($var);
- $var =~ s/^.* +(.*) user.*$/$1/;
- return $var;
-}
-
-my $output;
-if($showHostname) { $output = $col1."Hostname".$col2.": ".$col1.$osn.$col2." - "; }
-if($showOS) { $output .= $col1."OS".$col2.": ".$col1.$uname.$col2." - "; }
-if($linux && $showDistro && length $distro > 0 ) {
- $output .= $col1."Distro".$col2.": ".$col1.$distro;
- if (length $distrov > 0) {
- $output .= " ".$distrov;
- }
- $output .= $col2." - ";
-}
-if($showCPU) { $output .= $col1."CPU".$col2.": ".$col1.$cpu.$col2." - "; }
-if($showProcesses) { $output .= $col1."Processes".$col2.": ".$col1.&processes.$col2." - "; }
-if($showUptime) { $output .= $col1."Uptime".$col2.": ".$col1.&uptime.$col2." - "; }
-if($showUsers) { $output .= $col1."Users".$col2.": ".$col1.&users.$col2." - "; }
-if($showLoadAverage) { $output .= $col1."Load Average".$col2.": ".$col1.&loadaverage.$col2." - "; }
-if($showBattery) { $output .= $col1."Battery".$col2.": ".$col1.&battery.$col2." - "; }
-if($showMemoryUsage) { $output .= $col1."Memory Usage".$col2.": ".$col1.&memoryusage.$col2." - "; }
-if($showDiskUsage) { $output .= $col1."FS Usage".$col2.": ".$col1.&diskusage.$col2." - "; }
-if($showLVMUsage) { $output .= $col1."LVM Usage".$col2.": ".$col1.&lvmusage; }
-if($showNetworkTraffic) { $output .= &networktraffic; }
-$output =~ s/ - $//g;
-print "$output\n";
blob - 242812e76547fd7e4bb7efd74e3f59e3e84742ee (mode 755)
blob + /dev/null
--- sysinfo277-irssi.pl
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (c) 2002, 2003 David Rudie
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# $ident: sysinfo277-irssi.pl,v 2.77 2003/09/01 04:20:02 drudie Exp $
-#
-
-
-$VERSION = '2.77';
-%IRSSI = (
- authors => 'David Rudie',
- contact => 'david@inexistent.com',
- name => 'SysInfo',
- description => 'Cross-platform/architecture system information script.',
- license => 'BSD',
- url => 'http://www.inexistent.com/',
- changed => 'Mon Sep 01 04:20 PDT 2003',
- bugs => 'Probably some if it cannot read /proc.'
-);
-
-
-use Irssi;
-use POSIX qw(floor);
-use strict;
-
-
-# Set up the arrays and variables first.
-use vars qw(
- @arr
- @arr1
- @arr2
- $cpu
- @cpu
- @cpuinfo
- $data
- @data
- $df
- @dmesgboot
- @hinv
- @meminfo
- $mhz
- @mhz
- $model
- @netdev
- @netstat
- @nic
- @nicname
- $smp
- @smp
- $stream
- $sysctl
- @uptime
- $var
- $vara
- $varb
- $varc
- $vard
- $varh
- $varm
- $varp
- $varx
- $vary
- $varz
-);
-
-
-my $os = `uname -s`; chop($os);
-my $osn = `uname -n`; chop($osn);
-my $osv = `uname -r`; chop($osv);
-my $osm = `uname -m`; chop($osm);
-my $uname = "$os $osv/$osm";
-
-
-my $darwin = 1 if $os =~ /^Darwin$/;
-my $freebsd = 1 if $os =~ /^FreeBSD$/;
-my $linux = 1 if $os =~ /^Linux$/;
-my $netbsd = 1 if $os =~ /^NetBSD$/;
-my $openbsd = 1 if $os =~ /^OpenBSD$/;
-my $irix = 1 if $os =~ /^IRIX$/;
-my $irix64 = 1 if $os =~ /^IRIX64$/;
-
-
-my $alpha = 1 if $osm =~ /^alpha$/;
-my $armv4l = 1 if $osm =~ /^armv4l$/;
-my $armv5l = 1 if $osm =~ /^armv5l$/;
-my $i586 = 1 if $osm =~ /^i586$/;
-my $i686 = 1 if $osm =~ /^i686$/;
-my $ia64 = 1 if $osm =~ /^ia64$/;
-my $mips = 1 if $osm =~ /^mips$/;
-my $parisc64 = 1 if $osm =~ /^parisc64$/;
-my $ppc = 1 if $osm =~ /^ppc$/;
-my $x86_64 = 1 if $osm =~ /^x86_64$/;
-
-
-my $l26 = 1 if $osv =~ /^2\.6/;
-
-
-sub cmd_sysinfo {
- # Specify your NIC interface name (eth0, rl0, fxp0, etc) and a name for it.
- #
- # Example: @nic = ('eth0', 'eth1');
- # @nicname = ('External', 'Internal');
- #
- # NOTE: If you set one then you HAVE to set the other.
- @nic = split(/;/, Irssi::settings_get_str('sysinfo_nics'));
- @nicname = split(/;/, Irssi::settings_get_str('sysinfo_nicnames'));
-
-
- # These are the default settings for which information gets displayed.
- # 0 = Off; 1 = On
- my $showHostname = 1;
- my $showOS = 1;
- my $showCPU = 1;
- my $showProcesses = 1;
- my $showUptime = 1;
- my $showLoadAverage = 1;
- my $showBattery = 0;
- my $showMemoryUsage = 1;
- my $showDiskUsage = 1;
- my $showNetworkTraffic= 1;
-
-
- ###############################################
- ### Nothing below here should need changed. ###
- ###############################################
-
-
- if($linux) {
- @cpuinfo = &openfile("/proc/cpuinfo");
- @meminfo = &openfile("/proc/meminfo");
- @netdev = &openfile("/proc/net/dev");
- @uptime = &openfile("/proc/uptime");
- } elsif($irix || $irix64) {
- @hinv = `hinv`;
- } else {
- @dmesgboot = &openfile("/var/run/dmesg.boot");
- @netstat = `netstat -ibn`;
- if($darwin) {
- $sysctl = '/usr/sbin/sysctl';
- } else {
- $sysctl = '/sbin/sysctl';
- }
- }
-
-
- if($armv4l || $armv5l) {
- $df = 'df -k';
- } else {
- $df = 'df -lk';
- }
-
-
- if($showCPU) {
- if($freebsd) {
- if($alpha) {
- @cpu = grep(/^COMPAQ/, @dmesgboot);
- $cpu = join("\n", $cpu[0]);
- } else {
- @cpu = grep(/CPU: /, @dmesgboot);
- $cpu = join("\n", @cpu);
- @cpu = split(/: /, $cpu);
- $cpu = $cpu[1];
- @smp = grep(/ cpu/, @dmesgboot);
- $smp = scalar @smp;
- }
- }
- if($netbsd) {
- if($alpha) {
- @cpu = grep(/^COMPAQ/, @dmesgboot);
- $cpu = join("\n", $cpu[0]);
- @cpu = split(/, /, $cpu);
- $cpu = $cpu[0];
- } else {
- @cpu = grep(/cpu0: /, @dmesgboot);
- @cpu = grep(!/apic/, @cpu);
- $cpu = join("\n", $cpu[0]);
- @cpu = split(/: /, $cpu);
- $cpu = $cpu[1];
- @smp = grep(/cpu\d+:/, @dmesgboot);
- @smp = grep(/MHz/, @smp);
- $smp = scalar @smp;
- }
- }
- if($openbsd) {
- @cpu = grep(/cpu0: /, @dmesgboot);
- @cpu = grep(/[M|G]Hz/, @cpu);
- $cpu = join("\n", @cpu);
- @cpu = split(/: /, $cpu);
- $cpu = $cpu[1];
- }
- if($irix || $irix64) {
- @cpu = grep(/CPU:/, @hinv);
- $cpu = join("\n", @cpu);
- $cpu =~ s/^.*(R[0-9]*) .*$/$1/;
- @mhz = grep(/MHZ/, @hinv);
- $mhz = join("\n", @mhz);
- $mhz = $mhz[0];
- $mhz =~ s/^.* ([0-9]*) MHZ.*$/$1/;
- @smp = grep(/ IP/, @hinv);
- $smp = scalar @smp;
- chop($cpu);
- chop($mhz);
- $cpu = "MIPS $cpu ($mhz MHz)";
- }
- if($linux) {
- if($alpha) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $model = &cpuinfo("cpu model\\s+: ");
- $cpu = "$cpu $model";
- $smp = &cpuinfo("cpus detected\\s+: ");
- }
- if($armv4l || $armv5l) {
- $cpu = &cpuinfo("Processor\\s+: ");
- }
- if($i686 || $i586 || $x86_64) {
- $cpu = &cpuinfo("model name\\s+: ");
- $cpu =~ s/(.+) CPU family\t+\d+MHz/$1/g;
- $cpu =~ s/(.+) CPU .+GHz/$1/g;
- $mhz = &cpuinfo("cpu MHz\\s+: ");
- $cpu = "$cpu ($mhz MHz)";
- @smp = grep(/processor\s+: /, @cpuinfo);
- $smp = scalar @smp;
- }
- if($ia64) {
- $cpu = &cpuinfo("vendor\\s+: ");
- $model = &cpuinfo("family\\s+: ");
- $mhz = &cpuinfo("cpu MHz\\s+: ");
- $mhz = sprintf("%.2f", $mhz);
- $cpu = "$cpu $model ($mhz MHz)";
- @smp = grep(/processor\s+: /, @cpuinfo);
- $smp = scalar @smp;
- }
- if($mips) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $model = &cpuinfo("cpu model\\s+: ");
- $cpu = "$cpu $model";
- }
- if($parisc64) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $model = &cpuinfo("model name\\s+: ");
- $mhz = &cpuinfo("cpu MHz\\s+: ");
- $mhz = sprintf("%.2f", $mhz);
- $cpu = "$model $cpu ($mhz MHz)";
- }
- if($ppc) {
- $cpu = &cpuinfo("cpu\\s+: ");
- $mhz = &cpuinfo("clock\\s+: ");
- if($cpu =~ /^9.+/) {
- $model = "IBM PowerPC G5";
- } elsif($cpu =~ /^74.+/) {
- $model = "Motorola PowerPC G4";
- } else {
- $model = "IBM PowerPC G3";
- }
- $cpu = "$model $cpu ($mhz)";
- }
- } elsif($darwin) {
- $cpu = `hostinfo | grep 'Processor type' | cut -f2 -d':'`; chomp($cpu);
- $cpu =~ s/^\s*(.+)\s*$/$1/g;
- if($cpu =~ /^ppc7.+/) {
- $cpu = "Motorola PowerPC G4";
- }
- $mhz = `$sysctl -n hw.cpufrequency`; chomp($mhz);
- $mhz = sprintf("%.2f", $mhz / 1000000);
- $cpu = "$cpu ($mhz MHz)";
- $smp = `hostinfo | grep "physically available" | cut -f1 -d' '`; chomp($smp);
- }
- if($smp && $smp gt 1) {
- $cpu = "$smp x $cpu";
- }
- }
-
-
- my $output;
- if($showHostname) { $output = "Hostname: $osn - "; }
- if($showOS) { $output .= "OS: $uname - "; }
- if($showCPU) { $output .= "CPU: $cpu - "; }
- if($showProcesses) { $output .= "Processes: ".&processes." - "; }
- if($showUptime) { $output .= "Uptime: ".&uptime." - "; }
- if($showLoadAverage) { $output .= "Load Average: ".&loadaverage." - "; }
- if($showBattery) { $output .= "Battery: ".&battery." - "; }
- if($showMemoryUsage) { $output .= "Memory Usage: ".&memoryusage." - "; }
- if($showDiskUsage) { $output .= "Disk Usage: ".&diskusage." - "; }
- if($showNetworkTraffic) { $output .= &networktraffic; }
- $output =~ s/ - $//g;
- Irssi::active_win()->command("/ $output");
- return 1;
-}
-
-
-sub battery {
- $data = "";
- if(open(FD, '/proc/apm')) {
- while($stream = <FD>) {
- $data .= $stream;
- @data = split(/\n/, $data);
- }
- close(FD);
- }
- $data = $data[0];
- $data =~ s/.+\s(\d+%).+/$1/;
- return $data;
-}
-
-
-sub cpuinfo {
- my $string = shift;
- @arr = grep(/$string/, @cpuinfo);
- $var = join("\n", $arr[0]);
- @arr = split(/: /, $var);
- $var = $arr[1];
- return $var;
-}
-
-
-sub diskusage {
- if($irix || $irix64) {
- $vara = `$df | grep -v Filesystem | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vara);
- $vard = `$df | grep -v Filesystem | awk '{ sum+=\$4 / 1024 / 1024}; END { print sum }'`; chomp($vard);
- } else {
- $vara = `$df | grep -v Filesystem | awk '{ sum+=\$2 / 1024 / 1024}; END { print sum }'`; chomp($vara);
- $vard = `$df | grep -v Filesystem | awk '{ sum+=\$3 / 1024 / 1024}; END { print sum }'`; chomp($vard);
- }
- $varp = sprintf("%.2f", $vard / $vara * 100);
- $vara = sprintf("%.2f", $vara);
- $vard = sprintf("%.2f", $vard);
- return $vard."GB/".$vara."GB ($varp%)";
-}
-
-
-sub loadaverage {
- $var = `uptime`; chomp($var);
- if($irix || $irix64 || $linux) {
- @arr = split(/average: /, $var, 2);
- } else {
- @arr = split(/averages: /, $var, 2);
- }
- @arr = split(/, /, $arr[1], 2);
- $var = $arr[0];
- return $var;
-}
-
-
-sub meminfo {
- my $string = shift;
- @arr = grep(/$string/, @meminfo);
- $var = join("\n", $arr[0]);
- @arr = split(/\s+/, $var);
- $var = $arr[1];
- return $var;
-}
-
-
-sub memoryusage {
- if($linux) {
- if($l26) {
- $vara = &meminfo("MemTotal:") * 1024;
- $varb = &meminfo("Buffers:") * 1024;
- $varc = &meminfo("Cached:") * 1024;
- $vard = &meminfo("MemFree:") * 1024;
- } else {
- @arr = grep(/Mem:/, @meminfo);
- $var = join("\n", @arr);
- @arr = split(/\s+/, $var);
- $vara = $arr[1];
- $varb = $arr[5];
- $varc = $arr[6];
- $vard = $arr[3];
- }
- $vard = ($vara - $vard) - $varb - $varc;
- } elsif($darwin) {
- $vard = `vm_stat | grep 'Pages active' | awk '{print \$3}'` * 4096;
- $vara = `$sysctl -n hw.physmem`;
- } elsif($irix || $irix64) {
- $var = `top -d1 | grep Memory`; chomp($var);
- $vara = $var;
- $vard = $var;
- $vara =~ s/^.* ([0-9]*)M max.*$/$1/;
- $vara *= 1024 * 1024;
- $vard =~ s/^.* ([0-9]*)M free,.*$/$1/;
- $vard = $vara - ($vard * 1024 * 1024);
- } else {
- $vard = `vmstat -s | grep 'pages active' | awk '{print \$1}'` * `vmstat -s | grep 'per page' | awk '{print \$1}'`;
- $vara = `$sysctl -n hw.physmem`;
- }
- $varp = sprintf("%.2f", $vard / $vara * 100);
- $vara = sprintf("%.2f", $vara / 1024 / 1024);
- $vard = sprintf("%.2f", $vard / 1024 / 1024);
- return $vard."MB/".$vara."MB ($varp%)";
-}
-
-
-sub networkinfobsd {
- $varc = shift;
- $vard = shift;
- @arr = grep(/$varc/, @netstat);
- @arr = grep(/Link/, @arr);
- $var = join("\n", @arr);
- @arr = split(/\s+/, $var);
- $var = $arr[$vard] / 1024 / 1024;
- $var = sprintf("%.2f", $var);
- return $var;
-}
-
-
-sub networkinfolinux {
- $varc = shift;
- $vard = shift;
- @arr = grep(/$varc/, @netdev);
- $var = join("\n", @arr);
- @arr = split(/:\s*/, $var);
- @arr = split(/\s+/, $arr[1]);
- $var = $arr[$vard] / 1024 / 1024;
- $var = sprintf("%.2f", $var);
- return $var;
-}
-
-
-sub networktraffic {
- $vara = 0;
- $varz = "";
- $varb = scalar @nic;
- if($nic[$vara] ne "") {
- while($vara lt $varb) {
- if($nic[$vara] ne "") {
- if($darwin || $freebsd) {
- $varx = &networkinfobsd($nic[$vara], 6);
- $vary = &networkinfobsd($nic[$vara], 9);
- }
- if($netbsd || $openbsd) {
- $varx = &networkinfobsd($nic[$vara], 4);
- $vary = &networkinfobsd($nic[$vara], 5);
- }
- if($linux) {
- $varx = &networkinfolinux($nic[$vara], 0);
- $vary = &networkinfolinux($nic[$vara], 8);
- }
- $varz .= $nicname[$vara]." Traffic (".$nic[$vara]."): ".$varx."MB In/".$vary."MB Out - ";
- }
- $vara++;
- }
- return $varz;
- }
-}
-
-
-sub openfile {
- my $string = shift;
- $data = "";
- if(open(FD, $string)) {
- while($stream = <FD>) {
- $data .= $stream;
- @data = split(/\n/, $data);
- }
- close(FD);
- }
- return @data;
-}
-
-
-sub processes {
- if($irix || $irix64) {
- $var = `ps -e | grep -v PID | wc -l`;
- } else {
- $var = `ps ax | grep -v PID | wc -l`;
- }
- chomp($var);
- $var = $var;
- $var =~ s/^\s+//;
- $var =~ s/\s+$//;
- return $var;
-}
-
-
-sub uptime {
- if($irix || $irix64) {
- $var = `uptime`; chomp($var);
- if($var =~ /day/) {
- $var =~ s/^.* ([0-9]*) day.* ([0-9]*):([0-9]*), .*$/$1d $2h $3m/;
- } elsif($var =~/min/) {
- $var =~ s/^.* ([0-9]*) min.*$/0d 0h $1m/;
- } else {
- $var =~ s/^.* ([0-9]*):([0-9]*),.*$/0d $1h $2m/;
- }
- return $var;
- } else {
- if($freebsd) {
- $var = `$sysctl -n kern.boottime | awk '{print \$4}'`;
- }
- if($netbsd || $openbsd || $darwin) {
- $var = `$sysctl -n kern.boottime`;
- }
- if($linux) {
- @arr = split(/ /, $uptime[0]);
- $varx = $arr[0];
- } else {
- chomp($var);
- $var =~ s/,//g;
- $vary = `date +%s`; chomp($vary);
- $varx = $vary - $var;
- }
- $varx = sprintf("%2d", $varx);
- $vard = floor($varx / 86400);
- $varx %= 86400;
- $varh = floor($varx / 3600);
- $varx %= 3600;
- $varm = floor($varx / 60);
- if($vard eq 0) { $vard = ''; } elsif($vard >= 1) { $vard = $vard.'d '; }
- if($varh eq 0) { $varh = ''; } elsif($varh >= 1) { $varh = $varh.'h '; }
- if($varm eq 0) { $varm = ''; } elsif($varm >= 1) { $varm = $varm.'m'; }
- return $vard.$varh.$varm;
- }
-}
-
-Irssi::settings_add_str("sysinfo", "sysinfo_nics", "");
-Irssi::settings_add_str("sysinfo", "sysinfo_nicnames", "");
-
-Irssi::command_bind("sysinfo", "cmd_sysinfo");
blob - 9fb70ae09e54ec49a8653fb3b5d585603b1e1624 (mode 755)
blob + /dev/null
Binary files sysinfo281.16.pl and /dev/null differ