1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
#!/bin/sh
# Copyright (c) 1996, Eric Schenk.
# Copyright (c) 1997, 1998 Philippe Troin <phil@fifi.org> for Debian GNU/Linux.
#
# $Id:$
#
# 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
# When debugging a connection, set DEBUG to -v to increase chat's
# verbosity and to report on this script's progress.
# WARNING: THIS MIGHT CAUSE YOUR PASSWORD TO SHOW UP IN THE SYSTEM LOGS
# DEBUG=-v
# The initialization string for your modem
MODEM_INIT="ATZ&C1&D2%C0"
# The phone number to dial
PHONE_NUMBER="5551212"
# If the remote system calls you back, set to 1; otherwise leave to 0.
CALLBACK=0
# If you authentify using PAP or CHAP (that is let pppd handle the
# authentification, set this to 0.
AUTHENTIFY=1
# The chat sequence to recognize that the remote system
# is asking for your user name.
USER_CHAT_SEQ="name:--name:--name:--name:--name:--name:--name:"
# The string to send in response to the request for your user name.
USER_NAME="USER"
# 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="PASSWORD"
# 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="annex:"
# 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="Switching to PPP."
# Pass a message on to diald and the system logs.
message () {
if [ "$DEBUG" != "" ]
then
[ "$FIFO" != "" ] && echo "message $*" >$FIFO
logger -p local2.info -t connect "$*"
fi
}
# Initialize the modem. Usually this just resets it.
message "Initializing Modem"
chat $DEBUG TIMEOUT 5 OK-AT-OK "$MODEM_INIT" TIMEOUT 45 OK ""
if [ $? != 0 ]; then
message "Failed to initialize modem"
exit 1
fi
# Dial the remote system.
message "Dialing system"
chat $DEBUG \
TIMEOUT 45 \
ABORT "NO CARRIER" \
ABORT BUSY \
ABORT "NO DIALTONE" \
ABORT ERROR \
"" "ATDT$PHONE_NUMBER" \
CONNECT "\c"
case $? in
0) message Connected;;
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
# Return here if the script doesn't handle authentification (pppd should).
if [ "$AUTHENTIFY" = 0 ]; then
exit 0
fi
# We're connected try to log in.
message "Logging in"
chat $DEBUG \
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
# Wait eventually for callback
if [ "$CALLBACK" != 0 ]; then
message "Waiting for callback"
chat $DEBUG \
TIMEOUT 20 \
RING ATA
if [ $? != 0]; then
message "Remote system did not call back"
exit 1
fi
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 $DEBUG TIMEOUT 15 "$PROMPT" "$PROTOCOL_START"
if [ $? != 0 ]; then
message "Prompt not received"
exit 1
fi
fi
if [ "$START_ACK" != "" ]; then
chat $DEBUG TIMEOUT 15 "$START_ACK" ""
if [ $? != 0 ]; then
message "Failed to start Protocol"
exit 1
fi
fi
# Success!
message "Protocol started"
|