-
Notifications
You must be signed in to change notification settings - Fork 5
/
stat.pl
58 lines (50 loc) · 1.21 KB
/
stat.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/perl
#
# Based on original version by Jon Anhold <jon@snoopy.net>
# Modifications by Jeremy Weatherford <xidus@xidus.net>
# This code is licensed under the GNU General Public License
#
# License text may be found at: http://www.gnu.org/copyleft/gpl.html
#
# stat <stat> <name>
$s = $ARGV[0];
$n = $s;
$n = $ARGV[1] if $ARGV[1];
$uptime = `uptime`;
$uptime =~ /up (.*?),/;
$up = $1;
if ($s eq "load") {
$l = `cat /proc/loadavg`;
$l =~ /([0-9.]+)/;
$data = $1 * 100;
} elsif ($s eq "users") {
$l = `w | wc -l`;
$l =~ /(\d+)/;
$data = $l - 2;
} elsif ($s eq "procs") {
$l = `ps auxc | wc -l`;
$l =~ /(\d+)/;
$data = $l - 3;
} elsif ($s eq "dnsreqs") {
$l = `/usr/sbin/ndc stats`;
$l = `tail -3 /var/named/named.stats | head -1 | sed 's/ / /g' | cut -f 16 -d " "`;
$l =~ /(\d+)/;
$data = $l;
} elsif ($s eq "tcpopen") {
$l = `netstat -tn | grep ESTABLISHED | wc -l`;
$l =~ /(\d+)/;
$data = $1;
} elsif ($s eq "uptime") {
$data = $up;
$i = ($data =~ /(.*?) day/);
$data = 0;
$data = int($1) if $i;
} else {
$data = "0";
$n = "unknown stat requested";
}
$data = int($data);
print "$data\n";
print "$data\n";
print "$up\n";
print "$n\n";