| #!/bin/sh | |
| ################################################################### | |
| # | |
| # Script to dial the remote system, negotiate the connection, and send | |
| # it the id. Then wait for the modem to disconnect. Reset the modem | |
| # to answer mode and wait for the system to call back. | |
| # | |
| # The telephone number and modempass are used when establishing the | |
| # connection to the modem. | |
| # | |
| PHONE=555-1212 | |
| MODEMPASS=modem_identifier | |
| # | |
| # Once the modem calls back, the account name and password are used for | |
| # a UNIX style login operation. | |
| # | |
| ACCOUNT=my_account_name | |
| PASSWORD=my_password | |
| ################################################################### | |
| # | |
| # Step 1. Dial the modem and negotiate the initial dialog. | |
| # note: the modem is configured to ignore loss of DCD at this point. | |
| # it is important that this be performed because the loss of DCD | |
| # will normally prevent system from working since 'modem' is used | |
| # for pppd. | |
| # | |
| # The script is terminated normally when the carrier is lost. | |
| # | |
| chat -v \ | |
| TIMEOUT 3 \ | |
| ABORT '\nBUSY\r' \ | |
| ABORT '\nNO ANSWER\r' \ | |
| ABORT '\nRINGING\r\n\r\nRINGING\r' \ | |
| '' AT \ | |
| 'OK-+++\c-OK' 'AT&C0&D2S0=0H0' \ | |
| TIMEOUT 30 \ | |
| OK ATDT$TELEPHONE \ | |
| CONNECT '' \ | |
| assword: $MODEMPASS \ | |
| "\nNO CARRIER\r" | |
| if [ "$?" = "0" ]; then | |
| ################################################################### | |
| # | |
| # Step 2. Wait for the call back from the remote. This will wait for at most | |
| # 30 seconds for the call back should the first attempt fail or | |
| # something happen with the callback logic at the remote. | |
| # | |
| # note: when the callback occurs, the DCD setting is re-enabled. | |
| # | |
| # If some voice call should happen during this period, the system will | |
| # answer the telephone and then hang up on them. I realize that this is | |
| # rude, but there is little that this script can do. | |
| # | |
| chat -v \ | |
| TIMEOUT 30 \ | |
| ABORT '\nVOICE\r' \ | |
| '\nRING\r' 'AT&C1A' \ | |
| CONNECT '' \ | |
| TIMEOUT 10 \ | |
| ogin:--ogin: $ACCOUNT \ | |
| TIMEOUT 45 \ | |
| assword: $PASSWORD | |
| if [ "$?" = "0" ]; then | |
| exit 0 | |
| fi | |
| fi | |
| ################################################################### | |
| # | |
| # The script has failed. Terminate the connection mode. | |
| # | |
| chat -v TIMEOUT 3 "" AT 'OK-+++\c-OK' 'AT&C1&D2S0=0H0' OK | |
| exit 1 |