ckermit.ini
资源名称:cku197.tar.Z [点击查看]
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:21k
源码类别:
通讯/手机编程
开发平台:
Windows_Unix
- #!/usr/local/bin/kermit
- COMMENT - Standard C-Kermit initialization file
- ;
- ; For C-Kermit Version: 7.0.196 (but can also be used by 6.0.192)
- ;
- ; Filename:
- ; .kermrc (UNIX, OS-9, Aegis)
- ; CKERMIT.INI (OS/2, VMS, OpenVMS, AOS/VS, Atari ST, Commodore Amiga)
- ; ckermit.ini (Stratus VOS)
- ; K95.INI (Kermit 95 -- but this big version is not used there)
- ; K2.INI (Kermit/2 -- but ditto)
- ;
- ; Authors:
- ; Frank da Cruz, Christine M. Gianone, Jeffrey Altman
- ; Columbia University, New York, NY 10025-7799, USA
- ;
- ; Version 5A(188): 23 November 1992
- ; Version 5A(189): 29 June 1993
- ; Version 5A(190): 04 October 1994
- ; Version 5A(191): 17 April 1995
- ; Version 6.0.192: 6 September 1996
- ; Version 7.0.196: 1 January 2000
- ;
- ; This is the standard and recommended C-Kermit 7.0 initialization file. To
- ; override settings or definitions made in this file, to add new settings or
- ; definitions, or to make any other desired customizations, create a separate,
- ; personal customization file called:
- ;
- ; .mykermrc (UNIX, OS-9, Aegis, BeBox, Plan 9)
- ; CKERMOD.INI (OS/2, VMS, OpenVMS, AOS/VS, Atari ST, Commodore Amiga)
- ; ckermod.ini (VOS)
- ;
- ; You can also define the customization filename in an environment
- ; variable (logical name in VMS), CKERMOD, which takes precedence over
- ; the names shown above.
- ;
- ; WHAT THIS FILE DOES:
- ;
- ; . The FULLSCREEN file transfer display is selected if it is available
- ; . Defines your default dialing directory name:
- ; .kdd for UNIX, OS-9 and Aegis; CKERMIT.KDD for other operating systems.
- ; You can override this with the environment variable K_DIAL_DIRECTORY
- ; . Defines your default network directory name:
- ; .knd for UNIX, OS-9 and Aegis; CKERMIT.KND for other operating systems.
- ; You can override this with the environment variable K_NET_DIRECTORY
- ; . Defines your default services directory name:
- ; .ksd for UNIX, OS-9 and Aegis; CKERMIT.KSD for other operating systems.
- ; You can override this with environment variable K_SERVICE_DIRECTORY.
- ; . Defines your customization file name (name given above)
- ; . Performs system-dependent setups for UNIX, VMS, OS/2, etc.
- ; . Defines an EDIT macro to let you invoke a text editor from C-Kermit.
- ; . Defines TSEND, BSEND, TGET, BGET macros for text and binary file transfer.
- ; . Defines VTPRINT, PCGET, and PCSEND macros for use with MS-DOS Kermit, etc.
- ; . Opens your dialing directory if you have one.
- ; . Reads your services directory and defines ACCESS and LIST macros for it.
- ; . Executes your personal customization file, if you have one.
- ;
- ; C-Kermit 6.0 is documented in the book "Using C-Kermit", 2nd Edition,
- ; by Frank da Cruz and Christine M. Gianone, 1997, Digital Press /
- ; Butterworth-Heinemann, ISBN 1-55558-164-1. Updates are described in the
- ; text file, ckermit2.txt.
- ; Everything after this point depends on the script programming language.
- ; The CHECK command terminates this command file immediately if the script
- ; programming language (IF command) is not configured.
- ;
- set take error on ; This makes CHECK quit if no script language.
- check if ; Do we have an IF command? If not, quit now.
- set take error off ; Back to normal.
- local _sd _servicedir _xp ; Declare local variables.
- COMMENT - C-Kermit version 6.0 or later required.
- ;
- asg _xp v(xprogram)
- if not def _xp asg _xp v(program)
- if not equal "m(_xp)" "C-Kermit" -
- stop 1 v(cmdfile): This initialization file is only for C-Kermit.
- echo Executing v(cmdfile) for v(system)...
- if < v(version) 60000 -
- stop 1 v(cmdfile): C-Kermit 6.0 or later required.
- forward v(system) ; First do system-dependent items...
- :unknown ; Should not happen
- Stop 1 Error: System type unknown!
- :Aegis ; Apollo Aegis and
- :UNIX ; UNIX, all versions
- asg _myinit -
- v(home).mykermrc ; Customization filename
- if remote forward COMMON ; Skip local-mode items if "-R"
- asg _dialdir -
- v(home).kdd ; C-Kermit dialing directory
- asg _netdir -
- v(home).knd ; C-Kermit network directory
- asg _servicedir -
- v(home).ksd ; C-Kermit services directory
- if findex(IRIX,v(platform)) -
- set send packet-length 4000 ; Bug in IRIX Telnet server.
- forward COMMON ; End of UNIX section
- :OS9/68K ; OS-9
- asg _myinit -
- v(home).mykermrc ; Customization filename
- if remote forward COMMON
- asg _dialdir -
- v(home).kdd ; C-Kermit dialing directory
- asg _netdir -
- v(home).knd ; C-Kermit network directory
- asg _servicedir -
- v(home).ksd ; C-Kermit services directory
- if eq "$(TERM)" "vt100" - ; File transfer display
- set file display full ; Only works with VT-100 terminal type
- else if eq "$(TERM)" "VT100" -
- set file display full
- else set file display crt
- forward COMMON ; End of OS-9 section
- :VMS ; VMS and OpenVMS
- forward COMMON
- :OS/2 ; Kermit 95
- :WIN32
- echo This initialization file is not for use with K95.
- forward COMMON ; End of OS/2 section
- :AOS/VS ; Data General AOS/VS
- set window 1 ; Sliding windows don't work
- set file char dg-international ; File character-set
- set xfer char latin1 ; Transfer character-set
- set file display crt ; File transfer fisplay
- def cli push ; Escape to CLI
- def reset - ; Macro to reset DG DASHER terminal
- run write [!ascii 236 306 301]
- forward COMMON ; End of AOS/VS section
- :Amiga ; Commodore Amiga
- def cls echo 27[H27[2J ; CLS command to clear the screen
- set file display full ; Supports fullscreen display
- set file char latin1 ; Use Latin Alphabet 1 for file transfer
- set xfer char latin1 ; ...
- forward COMMON ; End of Amiga section
- :Atari_ST ; Atari ST
- def cls echo 27H27J ; Clear screen a`la VT52
- set file display crt ; FULLSCREEN not available
- set server display on ; Show file xfer display in server mode too
- set server timeout 15 ; Nonzero required for ^C interruption!
- forward COMMON ; End of Atari ST section
- :Macintosh ; Apple Macintosh
- set server display on ; Show file xfer display in server mode too.
- forward COMMON
- :Stratus_VOS ; Stratus VOS
- asg _myinit v(home)ckermod.ini
- if remote forward COMMON
- asg _dialdir v(home)ckermit.kdd
- asg _netdir v(home)ckermit.knd
- asg _servicedir v(home)ckermit.ksd
- set file display crt ; FULLSCREEN not available
- forward COMMON ; End of Stratus VOS section
- :COMMON ; For all systems
- ; Define macros that are useful when running C-Kermit in remote mode.
- ; These macros serve no purpose on local-mode-only versions such as
- ; OS/2, Macintosh, Amiga, and Atari ST Kermit, so we skip defining them
- ; for those systems.
- ;
- if not = 0 findex(v(system),WIN32:OS/2:Macintosh:Amiga:Atari_ST) -
- forward files
- ; VTPRINT macro. Print a file on your PC's local printer.
- def VTPRINT echo 27[5i, type %1, echo 27[4i
- ; or if your printer needs a formfeed to force the page out:
- ; def VTPRINT def echo 27[5i, type %1, echo 1227[4i
- ; Macros for host-initiated file transfer using APC:
- ; NOT NEEDED ANY MORE because of autodownload/autoupload.
- ; Remove the following FORWARD command to reinstate these definitions:
- :FILES
- ; Get customization and directory file names. Environment variables take
- ; precedence, so you do not have to edit this file to change these filenames.
- ;
- if def $(CKERMOD) assign _myinit $(CKERMOD)
- if not def _myinit assign _myinit v(home)CKERMOD.INI
- if remote forward CUSTOM ; Skip all this if -R given on command line
- if def $(K_NET_DIRECTORY) assign _netdir $(K_NET_DIRECTORY)
- if not def _netdir assign _netdir v(home)CKERMIT.KND
- if def $(K_DIAL_DIRECTORY) assign _dialdir $(K_DIAL_DIRECTORY)
- if not def _dialdir assign _dialdir v(home)CKERMIT.KDD
- CHECK DIAL ; Is there a DIAL command?
- xif fail { ; No.
- echo DIAL disabled
- forward CUSTOM
- }
- CHECK NETWORK
- xif success {
- xif exist m(_netdir) {
- set net directory m(_netdir)
- echo { Network directory is m(_netdir) }
- }
- }
- if eq "v(name)" "telnet" forward CUSTOM
- xif exist m(_dialdir) {
- set dial directory m(_dialdir)
- echo { Dial directory is m(_dialdir) }
- }
- COMMENT - Services directory
- if def $(K_SERVICE_DIRECTORY) assign _servicedir $(K_SERVICE_DIRECTORY)
- if not def _servicedir assign _servicedir v(home)CKERMIT.KSD
- if not exist m(_servicedir) forward connection
- echo { Services directory is m(_servicedir)}
- def MAX_SVCS 200 ; Adjust this if you have more entries
- define _sd 0 ; Assume no services directory
- open read m(_servicedir) ; Try to open services directory file
- xif success {
- declare &d[m(MAX_SVCS)] ; It's open, declare directory array
- for %i 1 m(MAX_SVCS) 1 { ; Read the lines into the array
- read &d[%i]
- if fail break
- }
- close read
- xif > %i m(MAX_SVCS) {
- echo Too many entries in services directory
- echo { Maximum is m(MAX_SVCS).}
- echo { Change definition of MAX_SVCS in v(cmdfile) to allow more. }
- echo { Services directory disabled.}
- } else {
- asg &d[0] feval(%i - 1)
- define _sd 1
- }
- }
- xif not m(_sd) {
- def access echo { Services directory not available.}
- asg list m(access)
- } else {
- def FIND {
- set case off
- for %i 1 &d[0] 1 {
- if eq {%1} {fsubstr(&d[%i],1,flen(%1))} break
- }
- if not > %i &d[0] return &d[%i]
- }
- def LIST {
- xif > v(argc) 1 {
- find %1
- if def v(return) echo v(return)
- else echo %1: Not found
- } else {
- echo &d[0] items in services directory:
- for %i 1 &d[0] 1 { echo fcont(&d[%i]) }
- }
- }
- def SPLIT { asg _word1 %1, asg _word2 %2 }
- def DOACCESS { ; (Used internally by ACCESS macro)
- do %5 %6 %7 %8 %9 ; Do the connection macro
- if fail end 1
- split %3 ; Get words from %3
- asg %3 m(_word1)
- asg %2 m(_word2)
- do %3 %4 {%1} %2 ; Login macro, userid, password, prompt
- }
- def ACCESS {
- if not defined %1 end 1 access what? ; Check service
- find %1 ; Look it up
- if success doaccess {%2} v(return) ; OK, try it
- else end 1 "%1" not in services directory ; Not found
- if fail end 1 ; DOACCESS failed?
- xif eq v(cmdlevel) 1 {
- echo
- echo ACCESS: Login succeeded - CONNECTing...
- show escape
- output 13
- connect /quietly
- }
- }
- }
- :CONNECTION ; Macros for making connections
- COMMENT - SERIAL macro. Arguments:
- ; %1 = device name
- ; %2 = speed
- ;
- def SERIAL {
- if < v(argc) 3 ; All arguments given?
- end 1 Usage: SERIAL device speed ; No.
- set line %1 ; OK, try to SET LINE.
- if failure - ; If this failed,
- end 1 Can't open device: %1 ; print message and quit.
- set speed %2 ; Try to set the speed.
- if fail end 1 Unsupported speed: %2 ; Failed.
- echo Connection successful. ; Succeeded.
- }
- COMMENT - NET macro. Arguments:
- ; %1 = network type
- ; %2 = host name or address
- ;
- def NET {
- if < v(argc) 3 end 1 Usage: NET network host
- set network type %1
- if fail end 1 unsupported network: %1
- set login user ; Don't send user ID.
- set host %2
- if fail end 1 Can't reach host: %2
- echo Connection successful.
- }
- COMMENT - CALL macro. Arguments:
- ;
- ; %1 = modem type
- ; %2 = device name
- ; %3 = speed
- ; %4 = phone number
- ;
- def CALL {
- if < v(argc) 5 - ; All arguments present?
- end 1 Usage: CALL modem device speed number
- xif not equal {v(modem)} {%1} { ; Set modem type
- set modem %1
- if fail end 1 unknown modem type: %1
- }
- xif not equal {v(line)} {%2} { ; Communication device
- set line %2
- if fail end 1 can't open device: %2
- }
- xif not equal {v(speed)} {%3} { ; Communication speed
- set speed %3
- if fail end 1 unsupported speed: %3
- }
- dial %4 ; Dial the number
- if fail end 1 Can't place call: %4
- end 0 Connection successful.
- }
- COMMENT - TCPCALL macro. Arguments:
- ;
- ; %1 = server name:port
- ; %2 = modem type
- ; %3 = phone number
- ;
- def TCPCALL {
- if < v(argc) 4 - ; All arguments present?
- end 1 Usage: TCPCALL server[:port] modem number
- set net type tcp/ip ; Which network to use
- if fail end 1 unsupported network: tcp/ip
- set host %1 ; Access server and port
- if fail end 1 can't access server %1
- set modem %2 ; Set modem type
- if fail end 1 unknown modem type: %2
- dial %3 ; Dial the number
- if fail end 1 Can't place call: %3
- end 0 Connection successful.
- }
- COMMENT - SPRINT macro. Arguments:
- ; %1 = Service name or address
- ;
- def SPRINT {
- if < v(argc) 2 end 1 Usage: %0 service
- set input timeout proceed
- output @D13
- input 10 TERMINAL=
- if fail end 1 No terminal prompt
- out D113
- inp 10 @
- if fail end 1 No atsign prompt
- output c %113
- input 10 CONNECTED
- if fail end 1 Can't access %1 from SprintNet
- }
- COMMENT - ULOGIN macro. For logging into systems where user ID is required
- ; but there is no password. Arguments:
- ; %1 = UNIX user ID
- ;
- define ULOGIN {
- if < v(argc) 2 end 1 Usage: %0 userid
- set input timeout proceed ; Handle timeouts ourselves
- set case on ; Case is important in UNIX
- minput 5 login: Username: {User ID:} {User Name:}
- out %113 ; Send username, carriage return
- end 0
- }
- COMMENT - VMSLOGIN macro. Arguments:
- ; %1 = VMS user ID
- ; %2 = Password. If password not supplied, it is prompted for.
- ; %3 = System prompt. If omitted a default is supplied.
- ;
- define VMSLOGIN {
- if < v(argc) 2 end 1 Usage: %0 userid [ password [ prompt ] ]
- while not defined %2 {
- askq %2 { %1's password: }
- }
- set parity none ; Set communication parameters
- set duplex full
- set handshake none
- set input timeout proceed ; Handle timeouts ourselves
- in 5 Username: ; Is prompt already there?
- xif fail { ; No.
- for %i 1 3 1 { ; Try 3 times to get it.
- out 13 ; Send carriage return
- in 5 Username: ; Look for prompt
- if success break ; Success, go log in
- }
- if > %i 3 end 1 No Username prompt
- }
- out %113 ; Send username, carriage return
- inp 5 Password: ; Wait 5 sec for this prompt
- if fail end 1 No password prompt
- pause ; Wait a sec
- out %213 ; Send password
- xif not emulation { ; No emulator built in?
- set input echo off ; Protect terminal from this
- minput 10 {27Z} {27[c} {27[0c} ; Get terminal ID query
- xif success { ; Got one
- output 27[?1c ; Send VT100 terminal ID
- in 2 27[6n ; Screen dimension query?
- if succ out 27[v(rows);v(cols)R ; Send dimensions
- }
- set input echo on ; Echo input again
- }
- if not def %3 - ; If we were not given a prompt
- asg %3 {v(prompt)} ; use the SET LOGIN PROMPT value
- if not def %3 - ; If we still don't have a prompt
- asg %3 {13$32} ; use this one as the default
- reinp 0 %3 ; Did we INPUT the prompt already?
- if fail inp 60 %3 ; No, look now.
- if fail end 1
- }
- COMMENT - UNIXLOGIN macro. Arguments:
- ; %1 = UNIX user ID
- ; %2 = Password. If password not supplied, it is prompted for.
- ; %3 = System prompt. If omitted a default is supplied.
- ;
- define UNIXLOGIN {
- local %m %i
- if < v(argc) 2 -
- end 1 Usage: %0 userid [ password [ prompt ] ]
- while not defined %2 {
- askq %2 { %1's password: }
- }
- set input echo on
- set parity none ; Set communication parameters.
- set duplex full
- set handshake none
- set input timeout proceed ; Handle timeouts ourselves
- set case on ; Case is important in UNIX
- def %m 10 ; Waiting time for INPUT
- for %i 1 5 1 {
- minput %m login: {ssword:} {Password for %1:}
- if success break
- output B13
- %m ::= 6-%1
- }
- if > %i 5 end 1 {No response from host}
- xif = v(minput) 1 { ; Have username prompt
- output %113 ; Send username
- minput 5 {ssword:} {ssword for %1:} ; Wait for password prompt
- if fail end 1 {No password prompt}
- }
- pause ; Wait a sec
- out %213 ; Send password
- if not def %3 - ; If we were not given a prompt
- asg %3 {v(prompt)} ; use the SET LOGIN PROMPT value
- if not def %3 - ; If we still don't have a prompt
- asg %3 {10$ } ; use this one as the default
- reinp 0 %3 ; Did we INPUT the prompt already?
- if fail inp 60 %3 ; No, look now.
- if fail end 1
- }
- COMMENT - VMLINELOGIN macro. Arguments:
- ; %1 = User ID
- ; %2 = Password
- ;
- define VMLINELOGIN {
- if < v(argc) 2 -
- end 1 Usage: %0 userid [ password ]
- while not defined %2 {
- askq %2 { %1's password: }
- }
- set parity mark ; Set communication parameters
- set flow none
- set handshake xon
- set duplex half
- set input timeout quit ; Don't bother with IF FAILURE
- input 10 BREAK KEY ; Look for BREAK KEY prompt
- pause 1 ; Wait a second
- output B ; Send BREAK
- input 10 .17, output logon %113 ; Now log in
- input 10 .17, output %213 ; Send password
- input 10 .17, output 13 ; Send carriage return
- input 10 .17, output 13 ; Send another one
- end 0
- }
- COMMENT - VMFULLOGIN macro. Arguments:
- ; %1 = User ID
- ; %2 = Password
- ;
- define VMFULLOGIN {
- if < v(argc) 2 -
- end 1 Usage: %0 userid [ password ]
- while not defined %2 {
- askq %2 { %1's password: }
- }
- set input timeout quit ; Quit if INPUT fails
- set parity even ; Set communication parameters
- set duplex full
- set handshake none
- set flow xon/xoff
- out 13 ; Send carriage return
- inp 5 TERMINAL TYPE: ; Get terminal-type prompt
- out vt-10013 ; Just send "vt-100"
- inp 20 RUNNING ; Get RUNNING message
- pau 1 ; Wait one second
- out %19%213 ; Send user ID, tab, password
- out 1313 ; Two more carriage returns
- end 0
- }
- COMMENT - CISLOGIN macro. Arguments:
- ; %1 = CompuServe User ID
- ; %2 = Password
- ; %3 = Prompt
- ;
- define CISLOGIN {
- if < v(argc) 2 -
- end 1 Usage: %0 userid [ password [ prompt ] ]
- while not defined %2 {
- askq %2 { %1's password: }
- }
- set terminal bytesize 7 ; No 8-bit characters
- set input timeout quit ; Skip the IF FAILURE's
- output 13 ; Send initial carriage return
- input 5 Host Name: ; Look for Host Name prompt
- output cis13 ; Send "cis" and carriage return
- input 5 User ID: ; Look for User ID prompt
- output %113 ; Send ID and carriage return
- input Password: ; Look for Password prompt
- output %213 ; Send password and CR
- if not def %3 asg %3 v(prompt)
- if not def %3 asg %3 {CompuServe Information Service}
- input 30 %3
- end 0
- }
- COMMENT - DOWLOGIN macro. Arguments:
- ; %1 = Dow Jones Password
- ;
- define DOWLOGIN {
- while not defined %1 { ; Get password
- askq %1 { Dow Jones password: }
- }
- set input timeout proceed
- input 20 SERVICE PLEASE???? ; Look for Dow prompt
- if fail end 1 No service prompt
- out djnr13 ; Select DJNR
- input 10 @@@@@@@@ ; Get password prompt
- if fail end 1 No password prompt
- pause 1 ; Wait a second, then...
- output %113 ; send password and CR
- input 30 ENTER QUERY ; Get DJNR query prompt
- if fail end 1 No main query prompt
- pause 1
- }
- COMMENT - DJNRSPRINT macro: Log in to Dow Jones via SprintNet.
- ;
- def djnrsprint sprint dow, if success dowlogin
- COMMENT - NOLOGIN macro. Does nothing. Use when login not required.
- ;
- def nologin comment
- :CUSTOM ; Customization file
- ; In VMS and OpenVMS, allow for system-wide site customizations
- xif equal "v(system)" "VMS" {
- xif exist CKERMIT_INI:CKERMIT.SYS {
- echo Executing CKERMIT_INI:CKERMIT.SYS
- take CKERMIT_INI:CKERMIT.SYS
- }
- }
- ; Execute user's personal customization file
- xif exist m(_myinit) { ; If it exists,
- echo Executing m(_myinit)... ; print message,
- take m(_myinit) ; and TAKE the file.
- }
- ; Finish up with traditional greeting.
- if < v(ntime) 43200 echo Good Morning!
- else if < v(ntime) 61200 echo Good Afternoon!
- else echo Good Evening.
- End ; of C-Kermit 7.0 initialization file.