xf.li | 8402749 | 2024-04-09 00:17:51 -0700 | [diff] [blame^] | 1 | #!/usr/bin/expect -f |
lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 2 | # |
| 3 | # This script was written by Jim Isaacson <jcisaac@crl.com>. It is |
| 4 | # designed to work as a script to use the SecureCARD(tm) device. This |
| 5 | # little device is mated with a central controller. The number displayed |
| 6 | # on this card changes every so often and you need to enter the number |
| 7 | # along with your user account name in order to gain access. Since chat |
| 8 | # is based upon fixed strings this procedure will not work with chat. |
| 9 | # |
| 10 | # It is included by permission. An excellent reference for the expect |
| 11 | # program used by this script is in the book: |
| 12 | # |
| 13 | # "Exploring Expect" |
| 14 | # by Don Libes |
| 15 | # Published by O'Rielly and Associates |
| 16 | # |
| 17 | |
| 18 | send_user "hello, starting ppp\n" |
| 19 | |
| 20 | system "stty 19200 -echoe -echo raw < /dev/ttyS3 > /dev/ttyS3" |
| 21 | |
| 22 | # |
| 23 | # These are the parameters for the program. |
| 24 | # |
| 25 | set user Pxxxxxx |
| 26 | set password xxxxxxx |
| 27 | set modem /dev/ttyS3 |
| 28 | set dialup <put phone number here> |
| 29 | set timeout 60 |
| 30 | |
| 31 | spawn -noecho -open [open $modem "r+"] |
| 32 | |
| 33 | send "AT&F\r" |
| 34 | expect "OK" |
| 35 | |
| 36 | send "ATe0v1x4&c1q0&d2&c1s2=128s0=0DT $dialup\r" |
| 37 | set timeout 15 |
| 38 | set counter 0 |
| 39 | |
| 40 | set still_connecting 1 |
| 41 | |
| 42 | expect { |
| 43 | -re ".*CONNECT.*\n" { |
| 44 | set timeout 5 |
| 45 | set still_connecting 0 |
| 46 | continue -expect |
| 47 | } |
| 48 | -re ".*CONNECT.*\r" { |
| 49 | set timeout 5 |
| 50 | set still_connecting 0 |
| 51 | continue -expect |
| 52 | } |
| 53 | -re ".*NO.*CARRIER" { |
| 54 | send_user "Failed to Connect, exiting...\n" |
| 55 | exit |
| 56 | } |
| 57 | -re ".*NO.*DIAL.*TONE" { |
| 58 | send_user "Failed to Connect, exiting...\n" |
| 59 | exit |
| 60 | } |
| 61 | -re ".*VOICE" { |
| 62 | send_user "Failed to Connect, exiting...\n" |
| 63 | exit |
| 64 | } |
| 65 | -re ".*sscode:.*\n" { |
| 66 | continue -expect |
| 67 | } |
| 68 | -re ".*sscode:" { |
| 69 | set timeout -1 |
| 70 | expect_user -re "(.*)\n" |
| 71 | send "$expect_out(1,string)\r" |
| 72 | set timeout 30 |
| 73 | continue -expect |
| 74 | } |
| 75 | -re ".*Next.*:" { |
| 76 | set timeout -1 |
| 77 | expect_user -re "(.*)\n" |
| 78 | send "$expect_out(1,string)\r" |
| 79 | set timeout 30 |
| 80 | continue -expect |
| 81 | } |
| 82 | -re "Your.*" { |
| 83 | send "\r" |
| 84 | continue -expect |
| 85 | } |
| 86 | -re ".*in:" { |
| 87 | send "$user\r" |
| 88 | continue -expect |
| 89 | } |
| 90 | -re ".*word:" { |
| 91 | send "$password\r" |
| 92 | } |
| 93 | |
| 94 | timeout { |
| 95 | if { $still_connecting > 0 } { |
| 96 | continue -expect |
| 97 | } |
| 98 | set timeout 15 |
| 99 | send "\r" |
| 100 | incr counter |
| 101 | if { $counter > 8 } { |
| 102 | send_user "Cannot Connect\n" |
| 103 | exit |
| 104 | } else { |
| 105 | continue -expect |
| 106 | } |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | overlay -0 $spawn_id -1 $spawn_id pppd /dev/ttyS3 19200 192.111.187.215: \ |
| 111 | crtscts modem defaultroute debug |