Subject: MacSLIP scripts Here are two MacSLIP scripts that I modified from the sample.script that comes with MacSLIP. I have used the Netcom script (mac-slip-netcom..) for some time now without any problems. And it is setup to start The Internet Adapter (TIA) on a Netcom shell account. The UUNet script (mac-slip-uunet..) is one I just modified to work on my UUNet PPP account. So far it seems to work OK. I hope these scripts help others get up on their accounts in less time than it took me. Frank E. Smith (fesmith@netcom.com soon to be fesmith@beartooth.com) # # Sample.script # # This is a generic script for logging into a SLIP/PPP server # You may need to modify it to work with your SLIP/PPP server or # use one of the more specific scripts. # # This script is designed to dial a Hayes compatible modem. # # The first time this script runs, it will prompt for your username, # password, and phone number to dial. These settings will be saved # for subequent connections. # # Using default settings, the modem will be initialized before this script # starts running. Make sure the "Init modem when connecting" option # is set in the "Modem" menu and that you have made an appropriate # modem selection. # # To call a list of phone numbers when getting busy signals, define # the numbers in $ph_num_1, $ph_num_2, ..., instead of $phone # ignore var busygo TIA p_index # If user is not defined, ask for it. ifdef user goto skipuser message "" message "\bEnter your login username." ask var define user "$var" label skipuser # if password is not defined, ask for it ifdef password goto skippass message "Will login as $user.\n\bPassword:" askp var define /h password "$var" label skippass # if phone is not defined, ask for it. Preset phone from # ph_num_1 if it is defined. do next_phone_number ifdef phone else message "\bEnter the phone number to dial" ask var define phone "$var" endif # Let the user know we're starting up label startup message "Script starting..." # Setup action handlers on restart goto restart on abort goto abort # Dial the phone and wait for the terminal server to send its login # banner. Some areas support using *70 as a dialing prefix to suppress # call-waiting tones which will probably cause your modem # to lose the connection. Some terminal servers may require you to # autobaud before they will respond. Allow enough time for the modem # handshake to complete. label dial ifdef INITMODEM goto skipwarn beep message "\bYou should select a modem using Configure" label skipwarn message "Dialing $phone..." flush on abort goto hangupabort send "ATDT $phone\r" { ifmatch "name:" break ifmatch "ogin:" break ifmatch "NO DIALTONE" goto nodialtone ifmatch "NO DIAL TONE" goto nodialtone ifmatch "BUSY" goto phonebusy ifmatch "NO CARRIER" goto nocarrier iftime 1:15 goto dialtimeout } # Log into the server. Try three times to send the username. Use # counter #1 to count the number of login attempts. setcount 1 0 label login ifcountgt 1 3 goto cantlogin message "Logging in as $user..." setcount 0 0 label user flush ifcountgt 0 3 goto baduser send "$user\r" { ifmatch "ssword:" break ifmatch "name:" goto user ifmatch "ogin:" goto user iftime 10 goto baduser } # Send the password and wait for the prompt. If we see the # username prompt again, then we didn't get logged in so try again. message "Sending password..." flush send "$password\r" { ifmatch "}" goto setslip ifmatch "%" goto setslip ifmatch "Access denied" goto accessdenied ifmatch "incorrect" goto accessdenied iftime 10 goto cantlogin } # If the login attempt fails, we land here. label accessdenied { ifmatch "name:" goto login ifmatch "ogin:" goto login ifmatch "NO CARRIER" goto cantlogin iftime 10 goto cantlogin } # NOTE: You may wish to issue additional commands here before # enabling SLIP/PPP on your server. # Enable SLIP/PPP. # In this generic script, you may have to issue a different command # here for your script server. Here, we just send "slip\r". You may # also need to match something other than "SLIP" to detect # that your slip command succeeded. label setslip message "Enabling TIA mode on server..." flush send "tia default\r" # Use the following line instead for a Cisco terminal server # send "$TRANSPORT default\r" # Your slip server may also require you to specify an address: # send "slip 10.2.3.4\r" { ifmatch "software." break ifmatch "beginning" break ifmatch "start" break iftime 10 goto cantstartslip } # Uncomment one of the following "ipfind" lines if your server doesn't # support BOOTP, but outputs your IP address in its response to # the slip command. To uncomment the line, delete the leading # hashmark and space: "# " # # Uncomment the following line if your server only outputs the # your IP address. ex: "Slip connection to 10.2.3.4 beginning". ipfind IPADDRESS # # Uncomment the following line if your server outputs both, # ex: "Slip session from 10.2.3.1 to 10.2.3.4 beginning" # ipfind IPGWADDRESS IPADDRESS # # Uncomment this line if your server doesn't display the # gateway address as in the first ipfind command, or if # your gateway address and your IP address aren't on the same subnet. # set IPGWADDRESS $IPADDRESS # All done. Send message to alert the user, flush the junk out of the # receive buffer, and return success. message "Script complete" flush return 1 # Error handlers. label abort beep message "\bCommand-. seen or Cancel button clicked." goto aborted label hangupabort beep message "\bCommand-. seen or Cancel button clicked." goto hangup label cantfindmodem beep message "\bThe modem didn't respond to attention" message "\bbsignal. Check modem and cabling." goto aborted label cantinitmodem beep message "\bThe modem didn't respond to initialization" message "\bstring. Check the modem." goto aborted label nodialtone beep message "\bThe modem could not detect a dialtone." message "\bCheck the phone line." goto aborted label phonebusy flush message "\bThe number $phone is busy." do next_phone_number # Uncomment the next line if you always want to redial when busy # goto redial if $busygo eq "go" goto redial on restart goto busygo beep message "\bClick "Restart" to keep trying, "OK" to quit." ask junk return 0 label busygo on restart goto restart set busygo "go" flush label redial do syncmodem goto dial label nocarrier beep message "\bThe modem could not establish a connection." message "\bMake sure there is a modem on the other end." goto aborted label dialtimeout message "\bThe modem or server isn't responding." message "\bTry dialing manually to make sure the modem" message "\band server are OK." goto aborted label baduser beep message "\bThe server won't accept a username." message "\bTry dialing manually to make sure the" message "\bserver is OK." goto hangup label cantlogin beep message "\bLogin to server failed, check username" message "\band password." goto hangup label cantsetterm beep message "\bCan't set terminal line for $TRANSPORT operation." goto hangup label cantstartslip beep message "\bCan't put server into $TRANSPORT mode." goto hangup # General back-end for bailing out. label hangup do disconnect # fallthrough into aborted label aborted message "\bScript aborted!" message "\bClick "OK" to quit, "Restart" to retry." # This activates the OK button. ask junk flush return 0 # Restart procedure. # This label is entered when you click the restart button in the # connection dialog. We try to force the modem to hang up, then we go back # to the start of the script. label restart do disconnect message "\bScript restarted." goto startup # Disconnect procedure. The "disconect" procedure is called by MacSLIP # when the "Disconnect" button is clicked. This procedure escapes the # modem into command mode and hangs up the phone. The +++ escape sequence # is surrounded by delays that some modems require. label disconnect send "\d\d+++\d\dATH\r\d\d" do syncmodem return 1 # Alternate disconnect procedure for modems that drop into command mode # when DTR is dropped. You may want to try this alternate disconnect # procedure if the one above doesn't work for your modem. Just swap the # labels to use this one instead of the one above. label disconnect2 dtr off delay 3 send "ATH\r" dtr on flush return 1 # Attempt to sync up with the modem, but don't wait forever. label syncmodem setcount 4 0 flush label waitmodem2 ifcountgt 4 2 return send "AT\r" { ifmatch "OK" break iftime 2 goto waitmodem2 } flush return # This routine sets the phone variable to the next number in # a list defined as ph_num_1, ph_num_2, ... # If the ph_num_? variables are not defined, phone is # unmodified. label next_phone_number ifdef ph_num_$p_index then copyvar ph_num_$p_index phone incvar p_index else # return if no list of phone numbers if $p_index eq 1 return set p_index 1 goto next_phone_number endif return # for Emacs # Local Variables: # tab-width: 4 # End: