I seem to be getting a less-than-wonderful connection success rate with
Internet Direct. Any chance anyone else on the list is using ID and has
an /etc/ppp/connect script that he/she would like to share?
I suspect my problem is in testing for the server response to my password
entry to which my box responds with 'PPP' to initiate the PPP connection.
The server's response to my password is dynamic, with the name of the
server I've connected to and my IP address. The only constant in it's
response are the << and > signs at the beginning and end, so I have
chosen to test for the '>' character for lack of better options. I'm
sure there must be a better way, like a delay between when sending the
p/w and then the 'ppp' without testing for the server's response, but I'm
quite new to scripting and so would appreciate a pointer or two.
I've attached my current /etc/ppp/connect script, which you'll notice is
a generic script adopted for my needs.
Thanks for any pointers people might be able to add :-)
- Ben
Oh yes, and I suppose you may need to know that the error message that is
showing up in my /var/log/messages file is:
Sep 2 05:38:49 grunt syslogd: Cannot glue message parts together
which is followed by streams of garbled text before the modem hangs up
without making a proper PPP connection.
<bigger>#!/bin/sh
#------------------------------------------------------------------
# For the RPM I've added a few lines to report the connect speed.
# See /usr/lib/diald for the original connect script. -- Dave Cook
#------------------------------------------------------------------
# Copyright (c) 1996, Eric Schenk.
#
# This script is intended to give an example of a connection script
that
# uses the "message" facility of diald to communicate progress through
# the dialing process to a diald monitoring program such as dctrl or
diald-top.
# It also reports progress to the system logs. This can be useful if
you
# are seeing failed attempts to connect and you want to know when and
why
# they are failing.
#
# This script requires the use of chat-1.9 or greater for full
# functionality. It should work with older versions of chat,
# but it will not be able to report the reason for a connection
failure.
# Configuration parameters
# The initialization string for your modem
MODEM_INIT="ATZ&C1&D2%C0"
# The phone number to dial
#PHONE_NUMBER="331-8265"
#PHONE_NUMBER="602-9900"
PHONE_NUMBER="280-1234"
# The chat sequence to recognize that the remote system
# is asking for your user name.
USER_CHAT_SEQ="sername:--sername:--sername:--sername:--sername:--sername:--sername:"
# The string to send in response to the request for your user name.
USER_NAME="myusername"
# The chat sequence to recongnize that the remote system
# is asking for your password.
PASSWD_CHAT_SEQ="word:"
# The string to send in response to the request for your password.
PASSWORD="mypassword"
# The prompt the remote system will give once you are logged in
# If you do not define this then the script will assume that
# there is no command to be issued to start up the remote protocol.
PROMPT=">"
# The command to issue to start up the remote protocol
PROTOCOL_START="ppp"
# The string to wait for to see that the protocol on the remote
# end started OK. If this is empty then no check will be performed.
START_ACK="match your system."
# Pass a message on to diald and the system logs.
function message () {
[ $FIFO ] && echo "message $*" >$FIFO
logger -p local2.info -t connect "$*"
}
# Initialize the modem. Usually this just resets it.
message "Initializing Modem"
chat TIMEOUT 5 "" $MODEM_INIT TIMEOUT 45 OK ""
if [ $? != 0 ]; then
message "Failed to initialize modem"
exit 1
fi
>/var/log/connect
# Dial the remote system.
message "Dialing $PHONE_NUMBER"
chat -r /var/log/connect \
REPORT CONNECT \
TIMEOUT 45 \
ABORT "NO CARRIER" \
ABORT BUSY \
ABORT "NO DIALTONE" \
ABORT ERROR \
"" ATDT$PHONE_NUMBER \
CONNECT ""
case $? in
0) message "$(cat /var/log/connect)";;
1) message "Chat Error"; exit 1;;
2) message "Chat Script Error"; exit 1;;
3) message "Chat Timeout"; exit 1;;
4) message "No Carrier"; exit 1;;
5) message "Busy"; exit 1;;
6) message "No DialTone"; exit 1;;
7) message "Modem Error"; exit 1;;
*)
esac
# We're connected try to log in.
message "Loggin in"
chat \
TIMEOUT 5 \
$USER_CHAT_SEQ \\q$USER_NAME \
TIMEOUT 45 \
$PASSWD_CHAT_SEQ $PASSWORD
if [ $? != 0 ]; then
message "Failed to log in"
exit 1
fi
# We logged in, try to start up the protocol (provided that the
# user has specified how to do this)
if [ $PROMPT ]; then
message "Starting Comm Protocol"
chat TIMEOUT 15 $PROMPT $PROTOCOL_START
if [ $? != 0 ]; then
message "Prompt not received"
exit 1
fi
fi
if [ $START_ACK ]; then
chat TIMEOUT 15 $START_ACK ""
if [ $? != 0 ]; then
message "Failed to start Protocol"
exit 1
fi
fi
# Success!
message "Protocol started"
</bigger>
------------------------------------------------------
E L E C T R I C M E D I A S O L U T I O N S
"For all your communication needs"
tel +1 (604) 618-5471
fax +1 (604) 618-6805
toll-free (888) 229-8898
ICQ 7349277
------------------------------------------------------