#!/bin/sh # # A chatscript that will attempt to dial multiple numbers in sequence, until # you get connected. # # To use: edit /etc/peers/provider, and change the connect line to read: # connect "/usr/local/bin/redialer" # # 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. # # 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. PHONE1=123456789 CHAT1=/etc/chatscripts/provider PHONE2=912345678 CHAT2=/etc/chatscripts/provider PHONE3=891234567 CHAT3=/etc/chatscripts/provider PHONE4=789123456 CHAT4=/etc/chatscripts/provider PHONE5=001234567 CHAT5=/etc/chatscripts/provider # How long to sleep between retries: # # 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` 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