home *** CD-ROM | disk | FTP | other *** search
- #!/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
-