home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
ckscripts.tar.gz
/
ckscripts.tar
/
mpservers
< prev
next >
Wrap
Text File
|
2001-04-12
|
3KB
|
79 lines
#!/usr/local/bin/wermit +
; m p s e r v e r s -- Census of modem-pool servers.
; Reports number of ports defined, in use, and free on a terminal-server
; based modem-pool farm. Summarizes by server and by phone number.
; Assumes one phone number per server, but allows many servers per phone
; number. Assumes servers respond to "finger" request with a list of
; active sessions. Results are written to stdout.
;
; Illustrates:
; . Another tool for modem-pool management.
; . Associative arrays.
; . Reading output from external commands.
;
; Requires C-Kermit 7.1 on a UNIX host.
;
; Author: F. da Cruz, Columbia University, Apr 2001.
; Parallel arrays of server hostnames, port counts, and phone numbers.
; For example, the server called abcts1 has 92 ports and is on the
; 5551234 hunt group.
;
; CHANGE THESE DEFINITIONS FOR YOUR OWN INSTALLATION.
;
dcl \&s[] = abcts1 abcts2 xyzts1 xyzts2 xyzts3 xyzts4 xyzts5 xyzts6
dcl \&n[] = 92 92 92 92 92 184 46 92
dcl \&t[] = 5551234 5551234 5554321 5554321 5554321 5554321 5554321 5559999
define badversion echo C-Kermit 7.1 required, exit 1
if LLT \v(version) 701199 badversion
.n := \fdim(&n) ; Number of servers
.myname := \&_[0] ; Pathname of this script
def RECORD { ; Write a record
local s
.s := \v(ndate) \v(time) \%1
echo {\m(s)}
}
.ports := 0 ; Get total port count
for \i 1 n 1 {
incr ports \&n[i]
_incr xn<\&t[i]> \&n[i] ; And number of ports per phone number
}
echo {-------} ; Write heading
show mac ports
echo date.... time.... server ports busy free
echo {-------}
.\%s = 0 ; Clear counts
for i 1 n 1 {
_def pn<\&t[i]> 0
}
; Send "finger" command to each server.
; Pipe results through "grep -c tty" to count number of active tty ports.
; Accumulate per-server and per-phone-number sums.
for i 1 n 1 { ; Loop for each server
.\%x := \fcommand(finger @\&s[i] | grep -c tty)
.\%y ::= \&n[i] - \%x
record {\frpad(\&s[i],7) \flpad(\&n[i],4) \flpad(\%x,4) \flpad(\%y,4)}
incr \%s \%x
_incr pn<\&t[i]> \%x
}
.z := \faaconvert(pn,&a,&b) ; Convert associative array
for i 1 z 1 { ; Loop thru phone numbers
.\%x := \m(xn<\&a[i]>) ; Number of ports for this number
.\%y ::= \%x - \&b[i] ; Number free
record {\&a[i] \flpad(\%x,4) \flpad(\&b[i],4) \flpad(\%y,4)}
}
.\%y ::= \m(ports) - \%s ; Grand totals
record {TOTAL \flpad(\m(ports),4) \flpad(\%s,4) \flpad(\%y,4)}
exit 0