#!/usr/local/bin/kermit + ; Illustration of scripted dialup login using C-Kermit or K95. ; ; F. da Cruz, Columbia University Kermit Project, Sep 2003. ; ; This is a very simple example showing how to make a serial-port ; connection and log in to a Unix host -- nothing fancy like dialing or ; service directories, passing of parameters, etc. See the book for ; discussion and more ambitious examples. ; ; (1) Define operating parameters (change as needed). ; def port /dev/ttyS0 ; Specify serial port device def modem generic-high-speed ; Specify modem type def speed 57600 ; Interface speed def number 1-212-555-1234 ; Number to dial def parity none ; (or "even") Parity to use def myuserid abc ; My user ID on the host def getpass { ; Prompt for password undef mypass ; rather than recording it while not def mypass { ; in this script. askq mypass \m(tshost) Password: } } ; Remove the following two commands if there is no terminal server. ; Adjust as necessary if there is. def tsprompt > ; (*) Terminal server prompt if any def tshost myhost ; (*) Host name for terminal server ; (2) Set dialing options: set dial method tone ; (or pulse) set dial retries 20 ; How many times to redial if busy set dial display on ; (or "off") Watch dialing progress set input echo on ; (or "off") Watch dialogs ; (3) Make the call: set modem type \m(modem) ; Set modem type first set port \m(port) ; Then assign the port if fail exit 1 Can't open \m(port) ; Check for failure set speed 57600 ; Set port i/o parameters: speed set flow rts/cts ; i/o parameters: flow control set parity \m(parity) ; i/o parameters: parity dial \m(number) ; Dial the number if fail exit 1 Call failed. ; Check for failure ; (4) Dialog with terminal server, if any. ; This section is executed only if a terminal-server prompt is defined. ; Customize if necessary for your terminal server's dialog. ; if def tsprompt { ; If terminal server prompt defined... for \%i 1 10 1 { ; Try 10 times to get prompt input 5 \m(tsprompt) ; Wait 5 seconds for it if success break ; Got it - proceed output \13 ; No prompt - send a carriage return } output \m(tshost)\13 ; Output host name } ; (5) Log in: log session ; (if desired) create session.log getpass ; Get password from keyboard now. for \%i 1 10 1 { ; Try 10 times to get login prompt input 20 login: ; Wait 20 seconds for prompt if success break ; Got it - proceed output \13 ; No prompt - send a carriage return } if > \%i 10 exit 1 No login prompt. ; Never got one. output \m(myuserid)\13 ; Send user ID and carriage return. input 10 Password: ; Wait 10 sec for Password: prompt. if fail exit No Password prompt. ; Check for failure. output \m(mypass)\13 ; Send password and carriage return. undef mypass ; Erase password from memory. ; At this point you can use the "connect" command to go online for an ; interactive session, or you can continue the script. When your session ; is complete, log out from the host. If the host was accessed through a ; terminal server, you might have to exit or logout from the terminal ; server too. Then tell Kermit to "hangup" to hang up the modem in case ; it is not already disconnected.