Volgograd

Волгоград Linux User Group

Организована 23 ноября 2002 года

Проект заморожен Птн Июл 6 02:11:14 MSD 2012


Вход:  Пароль:  

ГраблеВодство/articles/redialer


#!/bin/sh
###
#
#файл redialer
#
# These parameters control the attack dialing sequence.
#
# 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=15
# это задержка между попытками

###
#
# This is a list of telephone numbers. Add new numbers if you wish
# and see the function 'callall' below for the dial process.
PHONE1=931345
#PHONE2=900050
#PHONE3=960777
# номера по которым звонить

###
#
# 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=логин_ваш
# он же логин

PASSWORD=пароль_Билла_Маму_Его_Г...
# он же пароль

###
#
# 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 \
'Здесь_нет_пробела' \rAT \
'OK-+++\c-OK' ATH0
return
}

# функция инициализации модема
# chat -v программка дозвона с флажком -v (verbose)

# TIMEOUT 3
# Это устанавливает паузу для получения ожидаемого ввода в 3 секунды.
# Вы можете увеличить это значение до 5 или 10 секунд,
# если вы используете медленный модем!

# 'И_здесь_нет_пробела' \rAT
# Не ожидаем ничего от модема, и послаем строку в него.

# 'OK-+++\c-OK' ATH0
# Ожидаем OK, если он не получен (потому что модем не в командном режиме),
# затем посылаем +++ (стандартная строка для Hayes-совместимых модемов,
# которая возвращает модем в командный режим) и ожидаем OK.
# Затем посылаем ATH0 (строка для завершения связи модема).
# Это позволяет вашему скрипту справляться с вашим модемом, зависшим во время сеанса связи!



###
#
# Script to dial a telephone
#
function callnumber
{
chat -v \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
'И_тут_его_не_должно_быть' ATM0L0 \
OK ATDT$1 \
CONNECT 'Блин_тут_тоже' \
ogin:--ogin: $ACCOUNT \
assword: $PASSWORD

# Тут мы номер набираем
#
# ABORT '\nBUSY\r'
# Если получена строка BUSY, то операция аварийно прекращается.

# ABORT '\nNO ANSWER\r'
# Если получена строка NO ANSWER, то операция аварийно прекращается.

# ABORT '\nRINGING\r\n\r\nRINGING\r'
# Если (повторимся) получена строка RINGING, то операция аварийно прекращается.
# Это потому, что кто-то сидит на вашей телефонной линии!

# ' ' ATM0L0
# ' ' – ничего от модема не ждем, посылаем ему ATM0L0 – режим, когда звук у модема выключен

# OK ATDT$1
# Ожидаем OK и набираем номер, на который мы хотим позвонить. (T – импульсный набор номера)

# CONNECT ' '
# Дожидаемся строки CONNECT (которую наш модем посылает, когда удаленные модем отвечает)
# и не посылаем в ответ ничего.

# ogin:--ogin: $ACCOUNT
# Снова, здесь мы вставляем кое-какое исправление ошибок.
# Ожидаем подсказку входа в систему (... ogin:), но если мы не получаем ее по истечении паузы,
# то посылаем возврат каретки и затем ищем подсказку входа в систему снова.
# Когда подсказка получена, посылаем username (сохраненное в переменной $ACCOUNT).

# assword: $PASSWORD
# Ожидаем запроса пароля и посылаем наш пароль (аналогично сохраненный в переменной).

#
# If the connection was successful then end the whole script with a
# success.
#
if [ "$?" = “0” ]; then
exit 0
fi

return
}

###
#
# Script to dial any telephone number
#
function callall
{
echo «dialing attempt number: $1" >/dev/console
callnumber $PHONE1
# callnumber $PHONE2

# callnumber $PHONE2
}

###
#
# Initialize the modem to ensure that it is in the command state
#
#initialize
if [ ! "$?" = “0” ]; then
exit 1
fi

#
# 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"
done

# Да будет вам счастье.