T.R | Title | User | Personal Name | Date | Lines |
---|
318.1 | Once you've got the PID the world's yours | SHEILA::BRODRIBB | | Thu Sep 25 1986 22:05 | 9 |
| $ context = ""
$ start_1:
$ pid = f$pid(context)
$ if pid .eqs. "" then exit
$ term = f$getjpi( pid, "terminal")
$ if term .eqs. "" then goto start_1
$ write sys$output "Terminal in use... ", term
$ goto start_1
|
318.2 | Birds do it, bees do it ... | CLT::GILBERT | eager like a child | Fri Sep 26 1986 00:37 | 1 |
| SHOW DEVICE does it. Duplicate the code, or parse its output.
|
318.3 | try this? | FROST::HARRIMAN | DEC 41-BLANK-03, Harriman,Paul J., qty 1 | Fri Sep 26 1986 14:53 | 50 |
| try f$getdvi, it has all sorts of things to look for terminals with.
did you want to look at un-allocated terminals? then .1 won't find
them (un-allocated terminals have no PID's)
anyway, you could try a looping thing if you already know the
terminal unit/driver (i.e. TTA0, TXB5, TTC3)... Put together a string
out of the units, and a string version of the channel number, and
go for it...
$ start:
$!
$ unit_list = "A,B,C,D,E,F"
$ chan_list = "1,2,3,4,5,6,7"
$ unit_count = 1
$ chan_count = 1
$!
$ outer_loop:
$!
$ if unit_count .gt. 6 then goto end_it
$!
$ inner_loop:
$!
$ if chan_count .gt. 7 then goto reset_loop
$!
$ tt_string = "TT" + f$element(unit_count,",",unit_list) -
+ f$element(chan_count,",",chan_list)
$!
$ whatever = f$getdvi(tt_string,"whatever_you_want")
$!
$ write sys$Output whatever
$!
$ chan_count = chan_count + 1
$!
$ goto inner_loop
$!
$ reset_loop:
$!
$ unit_count = unit_count + 1
$ chan_count = 1
$ goto outer_loop
$!
$ end_it:
$ exit
like that, maybe?
/pjh
|
318.4 | Not all terminals start with TT | REGINA::OSMAN | and silos to fill before I feep, and silos to fill before I feep | Fri Sep 26 1986 18:01 | 4 |
| Use SHOW DEVICE. Not all terminals start with "TT" necessarily.
Use F$GETDVI and see if their DEV_CLASS is 66.
/Eric
|
318.5 | | THEBAY::MTHOMAS | The Mad Hacker | Sat Sep 27 1986 17:51 | 44 |
| Here's a command file I use. (yet a another hack) It won't find
LT or VT terminals, only ones found by SYSGEN AUTO ALL.
$ say = "write sys$output"
$ devmm = "_TX,_TT"
$ devices = 0
$ !
$ next_devmm: if devmm .eqs. "" then goto end
$ dd = f$extract(0,f$locate(",",devmm),devmm)
$ devmm = f$extract(f$locate(",",devmm)+1,f$length(devmm),devmm)
$ c = "A" ! start off fresh
$ !
$ next_cont: label = "next_devmm"
$ c[0,8] = f$cvui(0,8,c) + 1
$ u = 0
$ !
$ loop: terminal = dd + c + f$string(u) + ":"
$ if .not. f$getdvi(terminal,"exists") then goto 'label'
$ if .not. f$getdvi(terminal,"tt_modem") then goto next_unit
$ if .not. f$getdvi(terminal,"avl") then goto next_unit
$ !
$ vprot = f$getdvi(terminal,"vprot")
$ prot = f$extract(f$locate("WORLD=",vprot)+6,4,vprot) - "L" - "P"
$ if "''prot'" .eqs. "" then goto next_unit
$ !
$ string = " (unallocated)"
$ if f$getdvi(terminal,"refcnt") .gt. 0 then -
$ string = " (allocated to PID "+-
f$getdvi(terminal,"pid")+-
")"
$ say "Found: "+terminal+string
$ devices = devices + 1
$ !
$ next_unit: label = "next_cont"
$ u = u + 1
$ goto loop
$ !
$ !
$ end: if devices .eq. 0 then goto none
$ say f$fao("Total: !UL terminal!%S found.",devices)
$ exit
$ !
$ none: say "No terminals where found."
$ exit
|
318.6 | OK, but can u tell what modem it is? | 3984::RUSZKOWSKI | Trust me, I know what I'm doing. | Thu Oct 02 1986 11:40 | 20 |
|
Maybe I should start a new note with this but it is similar.
Taking the logic one step further here. Does anyone out there
have any routine that will fiqure out what is on the other side
of the line.
I need to locate all modems attached to lines, fiqure out what
type of modem they are and then determine the baud rate.
I thought about sending a Control B and waiting for ready to
indentify DEC modems and sending AT for Hayes compatible. Since
this has to be done at each Baud rate it would be nice to see
what pitfalls may await me.
Anyone out there played with something like this before ?
Steve
|
318.7 | | UFP::MURPHY | Rick Murphy WA1SPT/4 341-2985 | Sat Oct 04 1986 22:09 | 7 |
| If the "lines" are DMF-32's, forget it. You won't get back any response
from the modem (actually, there will be a response; the DMF will
send it to the bit-bucket).
I've written code for MODEM that figures out the mode type (DF03
vs DF100 series.. you could add Hayes support.) Send me MAIL, or
grab the sources from MAASWS::SYS$PUBLIC:MODEM040.A, .B.
-Rick
|
318.8 | Some more ideas.... | FROST::HARRIMAN | DEC 41-BLANK-03, Harriman,Paul J., qty 1 | Tue Oct 07 1986 10:12 | 39 |
| re: .-2
It really depends what you are looking for. There are a NUMBER of
different things that can be attached to the other end of the line.
For instance, SET TERM/INQUIRE will usually tell the terminal to
identify itself and set your terminal characteristics and terminal
type to some "known" VMS entity. Now if you are trying to tell if
the "currently connected process" is a dial-in line, you should
do something like the following:
1) Don't connect your dialin lines to a terminal connection matrix,
like a MICOM or GANDALF. You lose traceability.
2) If your "lines" are hard-wired to something like a DMF-32, just
the fact that you are connected to that line should tell you what
you need to know (what dial-in line are you connected to? It's
hard-wired!)
3) Since most times a dialin line group is intended for use on more
than one machine, we are implementing the following:
a) We are using DECserver's and LAT technology.
b) We are connecting our dialin lines to specific ports on a
specific DECserver.
c) I have a "snoop" which extracts the LTAxxx -> server, port
names. This runs under LAT+ V1.1 or 1.2. Therefore when a
user logs in it can be determined if the user is on a dialin
line.
If you really want to go hog-wild over security, you can get trace-back
installed on the dialin lines, so you can even tell what number
dialed into your dial-in lines. We aren't that paranoid, but we
did want to tell who/what was coming over the dial-in lines.
/pjh
|
318.9 | finding a DSV Port... | LOTUS::ATTWOOL | A legend in his own lunch time | Tue Oct 14 1986 15:00 | 57 |
|
Subj: Findding LAT Lines and Decservers Ports..
Here is something i knocked up together in 5 mins to find out which
decserver/LAT and which port ( only on DSV's ) people were coming from...
Ok, I know, if they happen to login under a general account you
can't tell who the Hell they are.. but .. anyway,...
$ !
$ ! LATPORT jka 14-Oct-86
$ !
$ assign/user port.out sys$output
$ mc latcp sho port
$ write sys$output "[7m LAT,DECSERVER USER TRACE FACILTY [m"
$open_files:
$ open/read in_port port.out
$port_loop:
$ read/end_of_file=port_eof in_port record_line
$ term_type = f$extract(f$locate("<",record_line) + 1 -
, f$locate(">",record_line) - f$locate("<",record_line) - 1,record_line)
$
$ lcl_term = f$extract(f$locate("Local Port Name ",record_line) -
, f$locate("<", record_line ),record_line)
$ lcl_term = f$extract(f$locate("=",lcl_term)+1 -
, f$locate(":",lcl_term) - f$locate("=",lcl_term)+1,lcl_term)
$ lcl_term = f$edit(lcl_term,"TRIM")
$ if lcl_term .nes. "" then goto display_term
$ rtm_node = f$extract(f$locate("Remote Node Name ",record_line) -
, 80 ,record_line)
$ rtm_node = f$extract(f$locate("=",rtm_node) + 1 ,50,rtm_node)
$ rtm_node = f$edit(rtm_node,"TRIM")
$ if rtm_node .nes. "" then goto display_node
$ dsv_port = f$extract(f$locate("PORT_",record_line),50,record_line)
$ dsv_port = f$edit(dsv_port,"TRIM")
$ if dsv_port .nes. "" then goto display_port
$ goto port_loop
$display_term:
$ lcl_term = lcl_term - "A"
$ pid = f$getdvi(lcl_term, "PID")
$ if pid .eqs. "" then user = " NO USER "
$ if pid .eqs. "" then goto disp_cont
$ user = f$getjpi( pid ,"USERNAME")
$disp_cont:
$ write sys$output ""
$ write sys$output "Terminal ''lcl_term' User : ''user' Type: ''term_type'"
$ goto port_loop
$display_node:
$ write sys$output "LAT or DECSERVER device name : ''rtm_node'"
$ goto port_loop
$display_port:
$ write sys$output "DECSERVER Physical port : ''dsv_port'"
$ goto port_loop
$port_eof:
$ close in_port
$ del port.out.
|
318.10 | TLA's cause confusion | RDGENG::MACKAY | Kit Kye | Tue Oct 21 1986 05:51 | 4 |
| Re: .-1
The mnemonic "DSV" also stands for a Q-Bus device the DSV11 which is out in
Field Test - makesure that your TLA's don't cause confusion.
|
318.11 | | COOKIE::GARDNER | | Wed Nov 05 1986 16:17 | 42 |
| The following .COM fragment does a "show device", then walks through
the list of devices and figures out what's there. As written, it
recognizes terminals, disks, and workstation interfaces, but can
be extended to recognize other kinds of devices through suitable
f$getdvi and/or recognizing device names.
i is a list of uninteresting devices that should be ignored. It's
used here to ensure that remote, virtual, and emulated terminals
are not included in the list of terminals.
One thing to watch out for, on a large macho-Vax the list of disks
or list of terminals might become longer than the maximum length
DCL string. Coping with this is left as an exercise for the reader.
Also, I've never used this on a cluster, so it probably doesn't
cope with allocation classes very well.
$
$ disks = ""
$ terms = ""
$ qvss = "NO"
$ qdss = "NO"
$
$ i = ":LTA:OPA:RTA:RTB:VTA:TKA:WTA:"
$ show device /output=sys$scratch:configure_system.tmp
$ open/read tmp sys$scratch:configure_system.tmp
$dev_loop:
$ read/end=dev_done tmp lin
$ x = f$locate(":",lin)
$ if x .eq. f$length(lin) then goto dev_loop
$ x = "_" + f$extract(0,x,lin) + ": "
$ y = ":" + f$extract(1,3,x) + ":"
$ if f$locate(y,i) .lt. f$length(i) then goto dev_loop
$ if y .eqs. ":VAA:" then qdss = "YES"
$ if y .eqs. ":VCA:" then qvss = "YES"
$ if f$getdvi(x,"devclass") .eq. 1 then disks = disks + (x-"_")
$ if f$getdvi(x,"devclass") .eq. 66 then terms = terms + (x-"_")
$ goto dev_loop
$
$dev_done:
$ close tmp
$ delete sys$scratch:configure_system.tmp;*
$
|