mirror of https://gitee.com/openkylin/ppp.git
parent
f569843120
commit
df442e462e
133
scripts/redialer
133
scripts/redialer
|
@ -1,96 +1,69 @@
|
|||
#!/bin/sh
|
||||
###################################################################
|
||||
#
|
||||
# These parameters control the attack dialing sequence.
|
||||
# A chatscript that will attempt to dial multiple numbers in sequence, until
|
||||
# you get connected.
|
||||
#
|
||||
# Maximum number of attempts to reach the telephone number(s)
|
||||
MAX_ATTEMPTS=10
|
||||
# To use: edit /etc/peers/provider, and change the connect line to read:
|
||||
# connect "/usr/local/bin/redialer"
|
||||
#
|
||||
# See below for configuration.
|
||||
|
||||
# Delay between each of the attempts. This is a parameter to sleep
|
||||
# so use "15s" for 15 seconds, "1m" for 1 minute, etc.
|
||||
SLEEP_DELAY=15s
|
||||
# This is a list of chatscripts to use to get connected, and (optional)
|
||||
# telephone numbers to call for each of those chatscripts.
|
||||
#
|
||||
# Note that in the chatscripts, you may use #NUMBER#, this will be replaced
|
||||
# with the number it is calling. You might want to use this to only have one
|
||||
# chatscript that is used for all numbers, or you might need multiple
|
||||
# chatscripts.
|
||||
|
||||
###################################################################
|
||||
#
|
||||
# This is a list of telephone numbers. Add new numbers if you wish
|
||||
# and see the function 'callall' below for the dial process.
|
||||
PHONE1=555-1212
|
||||
PHONE2=411
|
||||
PHONE1=123456789
|
||||
CHAT1=/etc/chatscripts/provider
|
||||
|
||||
###################################################################
|
||||
#
|
||||
# If you use the ppp-on script, then these are passed to this routine
|
||||
# automatically. There is no need to define them here. If not, then
|
||||
# you will need to set the values.
|
||||
#
|
||||
ACCOUNT=my_account_name
|
||||
PASSWORD=my_password
|
||||
PHONE2=912345678
|
||||
CHAT2=/etc/chatscripts/provider
|
||||
|
||||
###################################################################
|
||||
#
|
||||
# Function to initialize the modem and ensure that it is in command
|
||||
# state. This may not be needed, but it doesn't hurt.
|
||||
#
|
||||
function initialize
|
||||
{
|
||||
chat -v TIMEOUT 3 '' AT 'OK-+++\c-OK'
|
||||
return
|
||||
}
|
||||
PHONE3=891234567
|
||||
CHAT3=/etc/chatscripts/provider
|
||||
|
||||
###################################################################
|
||||
#
|
||||
# Script to dial a telephone
|
||||
#
|
||||
function callnumber
|
||||
{
|
||||
chat -v \
|
||||
ABORT '\nBUSY\r' \
|
||||
ABORT '\nNO ANSWER\r' \
|
||||
ABORT '\nRINGING\r\n\r\nRINGING\r' \
|
||||
'' ATDT$1 \
|
||||
CONNECT '' \
|
||||
ogin:--ogin: $ACCOUNT \
|
||||
assword: $PASSWORD
|
||||
#
|
||||
# If the connection was successful then end the whole script with a
|
||||
# success.
|
||||
#
|
||||
if [ "$?" = "0" ]; then
|
||||
exit 0
|
||||
fi
|
||||
PHONE4=789123456
|
||||
CHAT4=/etc/chatscripts/provider
|
||||
|
||||
return
|
||||
}
|
||||
PHONE5=001234567
|
||||
CHAT5=/etc/chatscripts/provider
|
||||
|
||||
###################################################################
|
||||
# How long to sleep between retries:
|
||||
#
|
||||
# Script to dial any telephone number
|
||||
#
|
||||
function callall
|
||||
{
|
||||
# echo "dialing attempt number: $1" >/dev/console
|
||||
callnumber $PHONE1
|
||||
# callnumber $PHONE2
|
||||
}
|
||||
# Note that this is a parameter to sleep so use "15s" for 15 seconds,
|
||||
# "1m" for 1 minute, etc
|
||||
SLEEP_DELAY=1s
|
||||
|
||||
###################################################################
|
||||
#
|
||||
# Initialize the modem to ensure that it is in the command state
|
||||
#
|
||||
initialize
|
||||
if [ ! "$?" = "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
# The code below does the dialing.
|
||||
|
||||
#
|
||||
# Dial telephone numbers until one answers
|
||||
#
|
||||
attempt=0
|
||||
while : ; do
|
||||
attempt=`expr $attempt + 1`
|
||||
callall $attempt
|
||||
if [ "$attempt" = "$MAX_ATTEMPTS" ]; then
|
||||
exit 1
|
||||
fi
|
||||
sleep "$SLEEP_DELAY"
|
||||
attempt=`expr $attempt + 1`
|
||||
NUMBER=`eval echo '$PHONE'$attempt`
|
||||
CHAT=`eval echo '$CHAT'$attempt`
|
||||
if [ ! "$CHAT" ]; then
|
||||
attempt=0
|
||||
else
|
||||
logger "Dialing attempt number: $attempt"
|
||||
sed s/#NUMBER#/$NUMBER/ $CHAT >/etc/chatscripts/tmpchat
|
||||
/usr/sbin/chat -v -f /etc/chatscripts/tmpchat
|
||||
rm -f /etc/chatscripts/tmpchat
|
||||
case $? in
|
||||
0) logger Connection established ; exit 0;;
|
||||
1) logger chat: exit 1, see manpage for details. ; exit 1;;
|
||||
2) logger chat: exit 2, see manpage for details. ; exit 2;;
|
||||
3) logger chat: exit 3, see manpage for details. ;;
|
||||
4) logger Line busy. ;;
|
||||
5) logger No Carrier. ;;
|
||||
6) logger A call is coming. Exiting! ; exit 1;;
|
||||
7) logger No dialtone. ;;
|
||||
8) logger An error occured. Exiting! ; exit 1;;
|
||||
*) logger chat: exit $?, see manpage for details. ;;
|
||||
esac
|
||||
logger "Waiting $SLEEP_DELAY seconds before next try."
|
||||
sleep $SLEEP_DELAY
|
||||
fi
|
||||
done
|
||||
|
|
Loading…
Reference in New Issue