From: Marco d'Itri Date: Fri, 2 Jun 2017 11:14:10 +0200 Subject: [PATCH] scripts_redialer --- scripts/redialer | 133 ++++++++++++++++++++++--------------------------------- 1 file changed, 53 insertions(+), 80 deletions(-) diff --git a/scripts/redialer b/scripts/redialer index 5bbde4e9da4e..c0b748ad0e53 100755 --- a/scripts/redialer +++ b/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 - -# 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 - -################################################################### +# To use: edit /etc/peers/provider, and change the connect line to read: +# connect "/usr/local/bin/redialer" # -# 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 +# See below for configuration. -################################################################### +# This is a list of chatscripts to use to get connected, and (optional) +# telephone numbers to call for each of those chatscripts. # -# 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 +# 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. -################################################################### -# -# 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 -} +PHONE1=123456789 +CHAT1=/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 +PHONE2=912345678 +CHAT2=/etc/chatscripts/provider - return -} +PHONE3=891234567 +CHAT3=/etc/chatscripts/provider -################################################################### -# -# Script to dial any telephone number -# -function callall -{ -# echo "dialing attempt number: $1" >/dev/console - callnumber $PHONE1 -# callnumber $PHONE2 -} +PHONE4=789123456 +CHAT4=/etc/chatscripts/provider -################################################################### -# -# Initialize the modem to ensure that it is in the command state -# -initialize -if [ ! "$?" = "0" ]; then - exit 1 -fi +PHONE5=001234567 +CHAT5=/etc/chatscripts/provider +# How long to sleep between retries: # -# Dial telephone numbers until one answers -# +# Note that this is a parameter to sleep so use "15s" for 15 seconds, +# "1m" for 1 minute, etc +SLEEP_DELAY=1s + +# The code below does the dialing. + 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