commit b14f075560c732e04e3ad1c2e28083b5df2b4d11 from: int16h date: Sun Oct 5 16:58:06 2025 UTC archived old versions; updated README commit - 5a1dcdb1d7095f8cde74538cac7c9c2bee7fb14f commit + b14f075560c732e04e3ad1c2e28083b5df2b4d11 blob - fef95cdc5619d8018519ad0c6b8f1a8428758037 blob + 60be578d6cdbcda537d3d71fbfb251f7473cc7c9 --- README.md +++ README.md @@ -1,3 +1,31 @@ -# 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 @@ -0,0 +1,805 @@ +#!/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 and Travis Morgan \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 () { + if (/^last full capacity:\ +([0-9]+)/) { + $bfull = $1; + } + } + close(FD); + } + if(open(FD, '/proc/acpi/battery/'.$dir.'/state')) { + while () { + 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 = ) { + $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 = ) { + $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 @@ -0,0 +1,540 @@ +#!/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 = ) { + $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 = ) { + $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 @@ -1,803 +0,0 @@ -#!/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 and Travis Morgan \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 () { - if (/^last full capacity:\ +([0-9]+)/) { - $bfull = $1; - } - } - close(FD); - } - if(open(FD, '/proc/acpi/battery/'.$dir.'/state')) { - while () { - 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 = ) { - $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 = ) { - $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 @@ -1,540 +0,0 @@ -#!/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 = ) { - $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 = ) { - $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