1#!/usr/local/bin/expect -f
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
18send_user "hello, starting ppp\n"
19
20system "stty 19200 -echoe -echo raw < /dev/ttyS3 > /dev/ttyS3"
21
22#
23# These are the parameters for the program.
24#
25set user      Pxxxxxx
26set password  xxxxxxx 
27set modem     /dev/ttyS3
28set dialup    <put phone number here>
29set timeout   60
30
31spawn -noecho -open [open $modem "r+"]
32
33send "AT&F\r"
34expect "OK"
35
36send "ATe0v1x4&c1q0&d2&c1s2=128s0=0DT $dialup\r"
37set timeout 15
38set counter 0
39
40set still_connecting 1
41
42expect {
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
110overlay -0 $spawn_id -1 $spawn_id pppd /dev/ttyS3 19200 192.111.187.215: \
111	crtscts modem defaultroute debug 
112